我以前对c ++引用的了解是:
以下代码完全在g++ 4.6.1
上运行,尽管它打破了#2:
int a = 10, b = 30;
int& x = a;
x = b;
答案 0 :(得分:7)
您没有重新定义引用,而是为引用的内存位置分配值。执行a
的printf,您会看到它会打印30
而不是10
; - )
答案 1 :(得分:5)
帮助我更好地理解引用的是将它们视为变量的名称。 int& x = a
只是意味着当您说x
时,您实际上是指a
。
将引用视为别名。
这很清楚:
int a = 10, b = 30;
认为这不是x = 10
,而是“x是一个不同的名称。”
int& x = a;
现在,x
仍会引用a
,因此您提供的值为b
(30)。
x = b;
此时,x
仍绑定到a
,您刚刚更改了其值。
此时,x == 30
和a == 30
,但如果你这样做:
a = 10;
x
也将等于10
。
答案 2 :(得分:3)
引用不能重新设置,即导致引用不同的变量。
完全可以通过引用修改变量。
引用的基本效果是它成为它所引用的值的另一个名称。
答案 3 :(得分:2)
问题中的代码不会破解2
在你写的那一点:
int& x = a;
x 成为 a 的别名。
后来你写道:
x = b;
通过名为 x 的别名将 b 的值分配给 a 。
答案 4 :(得分:1)
常量变量必须在声明语句中初始化,不能重新定义。
答案 5 :(得分:0)
第三种说法不符合你的想法。它会将b
的值分配给x
,从而分配给a
。