C++ 引用

引用的本质

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;