可能重复:
为什么引用在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++的设计者似乎认为这是一条值得关注的路径.