2014-09-02 37 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

相關問題