C++ 可以重新分配引用吗?
我的理解是,一旦分配了参考资料,就不能在以后重新分配。然而,在C++的巡演中,Stroustrup有一个代码:C++ 可以重新分配引用吗?,c++,C++,我的理解是,一旦分配了参考资料,就不能在以后重新分配。然而,在C++的巡演中,Stroustrup有一个代码: int x = 2; int y = 3; int& r = x; int& r2 = y; r = r2; 这似乎意味着参考r可以在其初始赋值后重新赋值。规则只是引用只能重新分配给其他引用,还是我缺少了其他引用?否此处没有对引用的重新分配。仅将r2引用的y的值分配给r引用的x 要处理这种情况,请将引用视为其引用的变量的别名。当你把引用放在任何地方,你就是把变量本身放
int x = 2;
int y = 3;
int& r = x;
int& r2 = y;
r = r2;
这似乎意味着参考
r
可以在其初始赋值后重新赋值。规则只是引用只能重新分配给其他引用,还是我缺少了其他引用?否此处没有对引用的重新分配。仅将r2
引用的y
的值分配给r
引用的x
要处理这种情况,请将引用视为其引用的变量的别名。当你把引用放在任何地方,你就是把变量本身放在那里
您可以通过以下代码确保这一点
#include <iostream>
int main()
{
int x = 2;
int y = 3;
int& r = x;
int& r2 = y;
r = r2;
std::cout << std::boolalpha << (&x == &r) && (&y == &r2) && (&y != &r);// gives true
}
#包括
int main()
{
int x=2;
int y=3;
int&r=x;
int&r2=y;
r=r2;
std::cout否此处没有对引用进行重新分配。仅将r2
引用的y
的值分配给r
引用的x
若要处理这种情况,请将引用视为它引用的变量的别名。当您将引用放置在任何位置时,您将放置变量本身
您可以通过以下代码确保这一点
#include <iostream>
int main()
{
int x = 2;
int y = 3;
int& r = x;
int& r2 = y;
r = r2;
std::cout << std::boolalpha << (&x == &r) && (&y == &r2) && (&y != &r);// gives true
}
#包括
int main()
{
int x=2;
int y=3;
int&r=x;
int&r2=y;
r=r2;
std::cout您没有更改任何引用的内容
如果您查看这4个变量的地址,您将看到:
x
和r
仍然有相同的地址
y
和r2
仍然具有相同的地址
x
和y
仍然有不同的地址
您没有更改任何引用的内容
如果您查看这4个变量的地址,您将看到:
x
和r
仍然有相同的地址
y
和r2
仍然具有相同的地址
x
和y
仍然有不同的地址
相关:相关:我想我理解。所以基本上,我们只是替换存储在
&r
的值,而不是更改r
本身的地址?@iducam我想我完全理解。所以基本上,我们只是替换存储在&r
的值,而不是更改r
本身的地址?@iducam