- 本质
引用 = 变量的别名,不是新变量 底层就是指针常量: T* const 必须初始化,不能为空,不能改指向
-
语法
cpp
int a = 10;
int& b = a; // b 是 a 的引用
-
关键规则
引用一旦绑定,不能再绑别的变量
必须初始化,不能“先定义再绑”
不能指向 NULL
引用和原变量共用同一块内存
- 最常用场景:函数传参
(1)避免拷贝,效率高
cpp
void f(int& x) { ... }
(2)修改实参
cpp
void swap(int& a, int& b);
(3)只读 + 防拷贝
cpp
void f(const int& x);
- 常引用 const T&
可以绑定临时变量
可以绑定不同类型但能隐式转换的值
函数参数首选:安全 + 高效
- 引用 vs 指针(极简区别)
引用:必须非空、不能重定向、语法更干净 指针:可空、可改指向、更灵活
- 不能玩的
- 不能有引用的引用
- 不能有引用数组
- 不能返回局部变量的引用(悬空)