05 引用的本质
本质:引用的本质在 c++中,就是一个指针常量。
对于指针而言,指针常量的指针的指向是不可以修改的。
复习:指针常量:指针的指向是不可以修改。常量指针:使用指针不可以修改数据值。
#include <iostream>
using namespace std;
int main()
{
int a = 10;
int b = 10;
int a3 = 10;
int* pa = &a;
int* const pb = &b;
cout << pa << endl;
cout << pb << endl;
pa = &a3;
//pb = &a3; //报错:指针常量不可以修改指向
cout << pa << endl;
return 0;
}
结果:(环境:Windows11(arm/Apple M VM)/Visual Studio 2022/Debug/arm64)
000000459598FAA4
000000459598FAB0
000000459598FABC
我们这样理解本质:
如果我们输入这样一段代码:
int a = 10;
int& b = a;
cout << a << endl;
cout << b << endl;
b = 100;
那么编译器会自动修改为这样:
int a = 10;
int* const b = &a;
cout << a << endl;
cout << *b << endl;
*b = 100;
防止忘记:*b
就是解引用。
引用的本质是指针常量。指针常量一旦初始化后就不可以发生改变(int* const pb = &b;
)。所以引用一旦初始化后就不可以修改。但是使用的时候不需要知道这些,在理论题(?)的时候可以使用(?)。但是对我并没有什么卵用。
:-)