0

在 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
4

3 回答 3

6

一旦定义了引用变量来引用特定变量,它就可以引用 C plus plus 中的任何其他变量?

没有。引用在初始化时绑定,不能重新绑定。初始化后,引用只是它所绑定的对象的别名- 并且必须始终初始化引用。

换句话说,你对引用所做的任何事情都是在被引用的对象上完成的。例如这里:

int &r3 = r1;

您正在绑定r3r1,因此r3将是r1(如替代名称)的别名。这意味着后续的赋值:

r3 = r2;

不会重新绑定r3以引用: 相反,它r2最终分配r2r1. 知道了这一点,您应该能够弄清楚程序其余部分的行为。

于 2013-04-26T13:02:20.977 回答
0

不,一个引用在初始化后不能绑定到另一个对象。

int r1 =1001;
int r2  =10023;
int &r3 = r1;
r3=r2;

在这里,r3绑定到r1具有 value的对象1001。然后该名称的r3行为就像您使用该名称r1一样 - 它就像一个别名。当您将 value 分配r2给该对象时,r1现在包含 value 10023

于 2013-04-26T13:03:31.850 回答
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
于 2013-04-26T13:15:24.597 回答