实际是函数的别名,并且不是唯一的;
主要用于传递函数参数,可以修改原来的值;
和指针传参是一个效果;
引用主要用于结构或类而产生的,尤其是const引用
这样就不会改变结构或类的成员
1):使用指向结构的引用
2):将引用作为返回值...即返回引用值,如果不声明为const引用
,可以通过调用该函数对参数进行修改;
3):使用函数调用来访问结构的成员
const 引用:
主要是为了防止传参时造成参数被修改,
即如果在子函数中对参数修改的话会有错误产生而无法编译
const引用时如果实参的类型正确但不是左值或者
实参类型不正确但可以转换为正确的类型时,可以产生临时变量
结构和类:
他们果然是用户自定义类型,可以编辑一个函数,让其返回值为你定义的结构类型
也可以传递该结构类型的参数和返回该结构类型的参数
函数的返回值:
如果函数的返回值为引用,效率会更高,因为这样程序就不会创建一个临时存储内存用来存储返回值
也不需要拷贝该参数
为了避免函数会使用子函数中的临时变量,那么函数在返回值的时候应该返回
作为引用值传递进来的参数或
创建new分配内存存储参数,即:
const string & version3( string & s1,const string & s2 )
{
string* temp=new string;
*temp=s2+s1+s2;
return *temp;
}
auto_ptr模板会自动释放new相应的参数
何时(或为什么)使用引用:
1):能够修改调用函数中的数据对象
2):通过传递引用(而不是整个数据对象)提高程序运行的速度
何时(或对于使用传递的值而不作修改的函数)使用引用:
^1^数据对象很小:如内置数据类型或小型结构,按值传递
^2^如果对象是数组:使用指针,这是唯一的选择,并将指针声明为指向const的指针
^3^数据对象是较大的结构:使用const指针或const引用,提高效率,节省内存
^4^数据是类对象:使用const引用,这是类对象参数的标准方法
何时(或对于修改调用函数中数据的结构)使用引用:
^1^数据对象是内置数据类型(非类或结构):使用指针
^2^数据对象是数组:只能用指针
^3^数据对象是结构:引用或指针
^4^数据对象是类对象:使用引用
没有评论:
发表评论