参考变量定义不止一次

时间:2013-04-26 13:01:32

标签: c++

在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

3 个答案:

答案 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