1.使用
int i = 6;
const int &a = i;
i = 9;
在此时,a与i是同一个变量,名称不同
改变i的值,而不是用a改变
输出:
a=9,i=9
如果使用a改变值则编译错误
2.当引用对象类型不同时
double i = 6.79;
const int &a = i;
i = 9.67;
输出:
a=6,i=9.67
这种技术原理:
当a引用i时,创建了一个临时变量temp(不一定是叫这个变量名):
int temp = i;
//之后a引用临时变量temp
const int &a = temp;
double i = 6.79;
const int& a = i;
i = 9.67;
std::cout << "&i = " << &i << std::endl << "&a = " << &a;
输出结果:
&i = 003CFA3C
&a = 003CFA24
由此可以看出,实际上i与a不是同一个变量