2014-09-02 84 views
0

我了解到,一旦引用被初始化为一个对象,它就不能引用另一个对象。 我想自己试试。这是我试过的:C++引用可以引用另一个对象吗?

struct X 
{ 
    int s; 
}; 

int main() 
{ 
    X x1; 
    X x2; 

    X& xRef = x1; 
    xRef = x2; 

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

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

回答

3

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

xRef = x2; 

这条线不正是因为同样的事情:

x1 = x2; 

因为xRefx1参考你实际上是分配的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++语言不包含由任何机构你可以重新引用一个参考。一旦绑定,参考仅指相同的对象,并且此不能被更改。

+0

我现在明白了。谢谢。 – Aaron 2014-09-02 22:44:09

相关问题