为什么重新安装引用是非法/不道德的?

jke*_*eys 3 c++ reference

可能重复:
为什么引用在C++中不可重定位

我试图或多或少交换两个引用变量(作为实践,我可以交换实际变量).我尝试通过创建一个临时变量并使其中一个引用与另一个相等来做到这一点,但这被编译器击落了.这是一个例子:

void Foo()
{
   //code
   int& ref1 = a;
   int& ref2 = b;
   int temp;

   temp = ref1;
   ref1 = ref2;
   ref2 = temp;

   //or, better yet
   std::swap(ref1, ref2);
}
Run Code Online (Sandbox Code Playgroud)

我收到了一个错误,并查看了faq lite.它详细说明了它们无法重新安装,但没有解释原因.为什么?

是Faq Lite的链接供参考(<---,得到它?).

小智 10

因为没有语法可以做到:

int x = 0;
int y = 1;
int & r = x;
Run Code Online (Sandbox Code Playgroud)

现在,如果我说:

r = y;
Run Code Online (Sandbox Code Playgroud)

我将y的值赋给x.如果我想重新安装,我需要一些特殊的语法:

r @= y;    // maybe?
Run Code Online (Sandbox Code Playgroud)

由于使用引用的主要原因是函数的参数和返回类型,这不是问题,C++的设计者似乎认为这是一条值得关注的路径.


Mar*_*ork 7

引用是object的别名.
别名不能改变(我们不是间谍;-)