引用的本质
c++ 中引用的本质是给一块内存区域起别名。通过指针常量来实现。
// 引用的使用 int a = 10; int& b = a; b = 20 // 代码等价于下面的代码,编译器会进行自动替换 int a = 10; int* const ptr_b = &a; // 指针常量 *ptr_b = 20;
引用的注意事项
- 引用必须初始化
- 引用初始化之后就不能修改了(因为引用本质是指针常量)
- 不要返局部变量的引用
- 当引用做函数的返回值时,函数的调用可以做赋值符号的左值
函数的引用传值
使用引用传值和地址传值实现的效果相同,只是使用引用语法更加简洁。
void swap_ref(int&a, int&b); // 函数定义 swap_ref(a, b); // 函数调用
常量引用注意事项
int& a = 10; // 编译器报错 const int& a = 10; // 成功编译 // 第二行编译之所以能够成功,是因为编译器自动补全了下面的代码 int temp = 10; const int& a = temp;