C ++引用可以引用另一个对象吗?

时间:2014-09-02 22:27:06

标签: c++

我了解到,一旦将引用初始化为对象,它就无法引用另一个对象。 我想亲自尝试一下。这就是我试过的:

struct X
{
    int s;
};

int main()
{
    X x1;
    X x2;

    X& xRef = x1;
    xRef = x2;

    X* xPtr = &x1;
    xPtr = &x2;
}

此代码编译没有问题。 这是为什么?我错过了什么吗?

1 个答案:

答案 0 :(得分:3)

它编译是因为它是有效的C ++,它不会碰巧做你认为它做的事情。

xRef = x2;

这一行与以下内容完全相同:

x1 = x2;

由于xRef是对x1的引用,因此您实际上将x2的值分配给x1

例如:

int a = 5;
int b = 6;

int & a_ref = a;
a_ref = b;

b = 7;

std::cout << "a:" << a << " b:" << b << std::endl;

这将显示a的值为6(由于行a_ref = b;)而b为7。

C ++语言不包含任何可以重新绑定引用的机制。绑定后,引用只引用同一个对象,不能更改。