对C+的误解+;参考资料 我以前对C++引用的了解是: 应该在声明语句中初始化引用 一旦定义了引用,就不能重新定义它
下面这段代码在对C+的误解+;参考资料 我以前对C++引用的了解是: 应该在声明语句中初始化引用 一旦定义了引用,就不能重新定义它,c++,reference,C++,Reference,下面这段代码在g++4.6.1上完美运行,尽管它中断了#2: 您不是重新定义引用,而是为引用的内存位置指定一个值。打印a,您将看到它将打印30,而不是10;-) 第三个语句并不像您认为的那样。它将b的值赋给x,从而赋给a,引用不能重置,即导致引用不同的变量 完全可以通过引用修改变量 引用的基本效果是它变成了它所引用的值的另一个名称。问题中的代码没有中断2 在你写的时候: int& x = a; x = b; x成为a的别名 后来你写道: int& x = a; x = b;
g++4.6.1
上完美运行,尽管它中断了#2:
您不是重新定义引用,而是为引用的内存位置指定一个值。打印
a
,您将看到它将打印30
,而不是10
;-) 第三个语句并不像您认为的那样。它将b
的值赋给x
,从而赋给a
,引用不能重置,即导致引用不同的变量
完全可以通过引用修改变量
引用的基本效果是它变成了它所引用的值的另一个名称。问题中的代码没有中断2 在你写的时候:
int& x = a;
x = b;
x成为a的别名
后来你写道:
int& x = a;
x = b;
通过名为x的别名将b的值分配给a:
帮助我更好地理解引用的是将它们看作变量的名称int&x=a
的意思是当你说x
时,你实际上是指a
将引用视为别名
这很清楚:
int a = 10, b = 30;
不要将其视为x=10,而应视为“x是a的不同名称”
所以现在,x
仍将引用a
,因此您给a一个b
(30)的值
此时,x
仍然绑定到a
,您只是更改了它的值
因此,此时,x==30
和a==30
,但如果您这样做:
a = 10;
x
也将等于10
它是一个常量变量,必须在声明语句中初始化,并且不能重新定义 输出是什么?我想它是把30分配给一个
a = 10;