多次定义的引用变量 在C++中,一旦定义了引用变量来引用特定变量,它是否可以引用任何其他变量?< /p>

多次定义的引用变量 在C++中,一旦定义了引用变量来引用特定变量,它是否可以引用任何其他变量?< /p>,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; 一旦一个引用变量被定义为

我用于测试的代码如下所示:

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;
一旦一个引用变量被定义为引用一个特定变量,它就可以引用C++中的任何其他变量

。引用在初始化时绑定,不能重新绑定。初始化后,引用只是绑定到的对象的别名,引用必须始终初始化

换句话说,对引用执行的任何操作都是对被引用的对象执行的。例如,在这里:

int &r3 = r1;
您正在将
r3
绑定到
r1
,因此
r3
将是
r1
的别名(类似于替代名称)。这意味着后续转让:

r3 = r2;
重新绑定
r3
以引用
r2
:而是将
r2
分配给
r1
。了解了这一点,您应该能够了解程序其余部分的行为

一旦一个引用变量被定义为引用一个特定变量,它就可以引用C++中的任何其他变量

。引用在初始化时绑定,不能重新绑定。初始化后,引用只是绑定到的对象的别名,引用必须始终初始化

换句话说,对引用执行的任何操作都是对被引用的对象执行的。例如,在这里:

int &r3 = r1;
您正在将
r3
绑定到
r1
,因此
r3
将是
r1
的别名(类似于替代名称)。这意味着后续转让:

r3 = r2;

重新绑定
r3
以引用
r2
:而是将
r2
分配给
r1
。知道了这一点,您应该能够了解程序其余部分的行为。

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

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

这里,
r3
绑定到对象
r1
,值为
1001
。然后名称
r3
的行为与您使用的名称
r1
完全相同-它就像一个别名。将
r2
的值指定给该对象时,
r1
现在包含值
10023

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

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

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

以下是您的代码和注释,可以帮助您理解:

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
int r1=1001;//r1现在保存值1001
int r2=10023;//r2现在保存值10023
int&r3=r1;//现在使用r3就像使用r1一样
r3=r2;//与r1=r2相同;r1现在保存值10023
r3=999;//与r1=999相同;r1现在保存值999
r3=555;//与r1=555相同;r1现在保存值555
int r4=11;//r4现在保存值11
r3=r4;//与r1=r4相同;r1现在保存值11
r3=10177;//与r1=10177相同;r1现在保存值10177

cout这是您的代码和注释,可以帮助您理解:

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
int r1=1001;//r1现在保存值1001
int r2=10023;//r2现在保存值10023
int&r3=r1;//现在使用r3就像使用r1一样
r3=r2;//与r1=r2相同;r1现在保存值10023
r3=999;//与r1=999相同;r1现在保存值999
r3=555;//与r1=555相同;r1现在保存值555
int r4=11;//r4现在保存值11
r3=r4;//与r1=r4相同;r1现在保存值11
r3=10177;//与r1=10177相同;r1现在保存值10177

库特诺。您甚至不能忽略引用的初始化。您对哪一部分感到困惑?
r3=r2正在将r2的值分配给r3,而不是引用。因此,它们仍然指向不同的内存位置,但在此语句之后具有相同的值。否。您甚至不能忽略引用的初始化。您对哪一部分感到困惑?
r3=r2正在将r2的值分配给r3,而不是引用。因此,它们仍然指向不同的内存位置,但在该语句之后具有相同的值。您可以提及声明,而不必对引用进行非法初始化。+1。安迪,你为什么不更新你的个人资料?除了思考问题的可能解决方案并在我来到这里时学习之外,我还想知道andy prowl是谁:-)。很高兴看到你的答案和其他伟大的答案在一起,但这总是困扰着我:-)希望你尽快更新你的个人资料:-@Koushik:迟早我会的,但看到我真的没人,不要失望;)我要感谢你给我学习的机会。:-。期待着从您那里看到更多精彩的答案。祝您一切顺利,请尽快完成此项任务:-)您可以提及声明,而不必对引用进行非法初始化。+1。安迪,你为什么不更新你的个人资料?除了思考问题的可能解决方案并在我来到这里时学习之外,我还想知道andy prowl是谁:-)。很高兴看到你的答案和其他伟大的答案在一起,但这总是困扰着我:-)希望你尽快更新你的个人资料:-@Koushik:迟早我会的,但看到我真的没人,不要失望;)我要感谢你给我学习的机会。:-。期待着从您那里看到更多精彩的答案。祝您一切顺利,请尽快完成此项任务:-)