引用和指针
区别
引用 | 指针 |
---|---|
必须初始化 | 可以不初始化 |
不能为空 | 可以为空 |
不能更换目标 | 可以更换目标 |
总结:引用必须初始化,指针可以不初始化
当int a = 1;int b = 2;int &r = a;r = b;
时,引用依然指向a,但a的值变成了b
引用
左值引用
表示对象身份
右值引用
- 必须绑定到右值(即对象)上,表示对象的值
- 实现优化
优化
-
参数设置为引用
消除对象交互时不必要的对象拷贝,用const reference &
作为只读形参,避免参数拷贝,像传值参数一样的调用方式。 -
返回值为引用
在重载操作符时,使用引用型返回值使操作符调用方式与原来一样,如重载的vector操作符[]v[5] = 10;
效率对比
在编译器实现时,引用与指针的汇编代码完全相同,性能差距不大。