我以前对c ++引用的了解是:
以下代码完美地运行g++ 4.6.1,虽然它打破#2:
int a = 10, b = 30;
int& x = a;
x = b;
Run Code Online (Sandbox Code Playgroud)
帮助我更好地理解引用的是将它们视为变量的名称.int& x = a只是意味着当你说x,你的意思是a.
将引用视为别名.
这很清楚:
int a = 10, b = 30;
Run Code Online (Sandbox Code Playgroud)
想想这不是x = 10,但是"x是一个不同的名字".
int& x = a;
Run Code Online (Sandbox Code Playgroud)
所以现在,x仍然会引用a,所以你给出的值为b(30).
x = b;
Run Code Online (Sandbox Code Playgroud)
此时,x仍然必然a,你只是改变了它的价值.
因此,x == 30和a == 30在这一点上,但如果这样做:
a = 10;
Run Code Online (Sandbox Code Playgroud)
x也会平等的10.