引用
1 前情提要
在C语言中,我们往往会遇见复杂的指针(如数据结构之中的二级指针),理解起来比较复杂,C++对此加入了引用的概念。
指针和引用的大部分功能类似,是重叠的。
C++的引用可以在较为复杂的情况下进行一定替换,让代码变得更加简洁
但是不能完全替代指针!!!
2 概念剖析
C++中提出了一个新概念:引用
引用为对象起一个别名 ,与对象使用同一内存空间。
打个比方:孙悟空,又叫孙行者,又叫孙大圣,还叫齐天大圣。这个四个名字都指向同一个人。
我们来看一个样例:
3 引用特性
- 引用在定义时必须初始化
- 一个变量可以有多个引用
- 引用一旦引用一个实体,再不能引用其他实体(与指针相异)
必须初始化
这样写就会报错:
E0252 引用 变量 "b" 需要初始值设定项
对于引用的不可修改性,导致它不能完全替代指针。
就比如链表中,如果将前后指针换位引用,就会导致我们成功进行。
如图的双向链表就不能将中间的链表不能成功删除。因为无法改变引用指向。
4 常引用
int main() {
const int a = 10;
int& ra = a; // 该语句编译时会出错,a为常量
const int& ra = a;
int& b = 10; // 该语句编译时会出错,b为常量<