[转]http://www.cnblogs.com/Mr-xu/archive/2012/08/07/2626973.html
[转]http://blog.youkuaiyun.com/webscaler/article/details/6577429
重点:引用 本(实)质(作)上(中) 引用是“指针常量”。
像这样的就是引用:
int a, &ra=a;
【注】
1.声明引用变量时应该同时进行初始化,就是声明是必须同时指明是哪个变量的引用。
2.不能再将该引用作其他变量的引用。
3.不能指向数组。
4.可以作为左值。
本质
本质上引用是“指针常量”,int &ra=a; <=> int * const ra=a;
当使用的时候,编译器将ra编译成*ra。
所以:1.声明时必须初始化
2.不能再做其他变量的引用
3.数组和引用不是一个级别的数组引用可以写为 int (&ra)[10]=a;
使用
1.作为入参。
2.常引用+作为入参。
3.作为返回值。
①不能返回局部变量的引用
②不要返回函数内部new分配的内存的变量(返回的引用作为临时变量,忘记delete,容易造成内存泄露)
③可以作为左值,类似cout << "hello" << endl;
=的返回值、拷贝构造函数的参数、赋值操作符=的参数、其它情况都推荐使用引用。