引用变量等于另一个引用变量?

时间:2013-02-06 14:03:03

标签: c++

请考虑以下事项:

int someA = 1;
int someB = 2;

int &a = someA;
int &b = someB;

a = b;   // what happens here?

参考文献中发生了什么?好奇。

3 个答案:

答案 0 :(得分:4)

两个参考变量彼此相等本身并不是错误。这可能令人困惑。但是,您的代码所做的不是设置对其他引用的引用,而是将_A的值从1更改为2,这是_B中的内容。

您只能设置参考ONCE [初始化时]。一旦它被初始化,它将简单地成为原始变量的别名。

你可以这样做:

int &a = _A;
int &b = _A;

a = b;  

会将值1存储到_A,其值已为1

答案 1 :(得分:3)

你不能在函数之外使用语句。

a = b;   //compile error?

这是一个声明,所以必须在函数中:

int _A = 1;
int _B = 2;

int &a = _A;
int &b = _B;

int main()
{
   a = b;   //compile error? No. Now it compiles.

   // As 'a' and 'b' are references.
   // This means they are just another name for an already existing variable
   // ie they are alias
   //
   // It means that it is equivalent to using the original values.
   //
   // Thus it is equivalent too:
   _A = _B;
}

现在它编译。<​​/ p>

答案 2 :(得分:2)

这里没有错误,但我想我可能知道你对此感到困惑。不会重新分配引用,但会重新分配引用的值。

因此,当您执行a = b;时,您基本上是这样说的:_A = _B,因为引用是别名。

永远不能像指针那样重新分配引用。

引用也永远不能为空。