在C ++中,一旦定义了引用变量来引用特定变量,它是否可以引用任何其他变量?
我用于测试的代码如下:
int r1 =1001;
int r2 =10023;
int &r3 = r1;
r3 = r2;
r3 = 999;
r3 = 555;
int r4 = 11;
r3 = r4;
r3 = 10177;
cout<<r3<<endl;
cout<<r1<<endl;
cout<<r2<<endl;
cout<<r4<<endl;
输出:
10177
10177
10023
11
答案 0 :(得分:6)
一旦定义了一个引用变量来引用一个特定变量,它就可以引用C加上的任何其他变量加上?
否即可。引用在初始化时绑定,不能重新绑定。初始化之后,引用只是绑定到的对象的别名 - 引用必须始终被初始化。
换句话说,无论你在引用上做什么都是在被引用的对象上完成的。例如:
int &r3 = r1;
您将r3
绑定到r1
,因此r3
将成为r1
的别名(就像其他名称一样)。这意味着后续的任务:
r3 = r2;
不重新绑定r3
以引用r2
:相反,它最终会将r2
分配给r1
。知道这一点,你应该能够弄清楚程序其余部分的行为。
答案 1 :(得分:0)
不,在初始化之后,引用不能绑定到另一个对象。
int r1 =1001;
int r2 =10023;
int &r3 = r1;
r3=r2;
此处,r3
绑定到值为r1
的对象1001
。然后,名称r3
的行为与您使用名称r1
完全相同 - 就像别名一样。当您为该对象分配r2
的值时,r1
现在包含值10023
。
答案 2 :(得分:0)
以下是包含评论的代码,可能有助于您理解:
int r1 = 1001; // r1 now holds the value 1001
int r2 = 10023; // r2 now holds the value 10023
int &r3 = r1; // using r3 is now like using r1
r3=r2; // same as r1=r2; r1 now holds the value 10023
r3 = 999; // same as r1 = 999; r1 now holds the value 999
r3 = 555; // same as r1 = 555; r1 now holds the value 555
int r4 = 11; // r4 now holds the value 11
r3=r4; // same as r1 = r4; r1 now holds the value 11
r3 = 10177; // same as r1 = 10177; r1 now holds the value 10177
cout<<r3<<endl; // same as printing r1 which is 10177
cout<<r1<<endl; // prints 10177
cout<<r2<<endl; // prints 10023
cout<<r4<<endl; // prints 11