1. C++引用详解:从基础到实战
1.1 引用的本质与语法
在C++中,引用(Reference)本质上是一个已存在变量的别名。它的声明语法是类型 &引用名 = 原变量名。这个设计看似简单,却蕴含着C++语言设计的精妙之处:
cpp复制int i = 10; // 原始变量
int &j = i; // j是i的引用(别名)
int &k = j; // 也可以给引用再创建引用
这里有个重要细节:引用和取地址运算符都使用&符号,但出现在不同上下文环境中:
- 声明时出现在类型后面的是引用
- 出现在变量前面的是取地址操作
注意:引用必须在定义时初始化,这点与指针不同。未初始化的引用会导致编译错误。
1.2 引用的三大核心特性
1.2.1 必须初始化
引用必须在声明时绑定到一个已存在的对象。这个设计保证了引用永远不会是"空引用",避免了类似空指针的问题:
cpp复制int &ref; // 错误:引用必须初始化
int x = 5;
int &ref = x; // 正确
1.2.2 多引用支持
一个变量可以拥有多个引用,就像一个人可以有多个昵称:
cpp复制int origin = 100;
int &alias1 = origin;
int &alias2 = origin;
// alias1和alias2都指向origin
1.2.3 不可重绑定
引用一旦初始化后,就不能再绑定到其他对象。这与指针不同,指针可以随时改变指向:
cpp复制int a = 1, b = 2;
int &ref = a;
ref = b; // 这不是重绑定,而是把b的值赋给a
1.3 引用与指针的深度对比
虽然引用和指针都能间接访问对象,但它们有本质区别:
| 特性 | 引用 | 指针 |
|---|---|---|
| 空值 | 不能为空 | 可以为nullptr |
| 重绑定 |
