2012-10-02 98 views
2

可能重複:
What's the ampersand for when used after class name like ostream& operator <<(…)?C++操作符重載和符號

我新的C++,我有可能是一個非常noobish問題。我已經看到了這樣的事:

Vector3f & operator = (Vector3f & obj) 
{ 
    _item[0] = obj[0]; 
    _item[1] = obj[1]; 
    _item[2] = obj[2]; 

    return *this; 
} 

,我想知道爲什麼會出現Vector3f後的符號(&)。它在做什麼樣的魔術?我無法在任何地方找到任何解釋。最重要的是什麼東西上面之間和

Vector3f operator = (Vector3f obj) 
{ 
    _item[0] = obj[0]; 
    _item[1] = obj[1]; 
    _item[2] = obj[2]; 

    return *this; 
} 

回答

2

這是C++的通過引用返回的語法&返回引用。它只是表示該參數是來自調用上下文的對象的別名,而不是副本,並且,返回的對象實際上是*this,而不是副本。

+0

那麼它就像傳遞一個指向對象的指針?那麼爲什麼他們不通過指針而不是參考? –

+0

@MartinMarinov,因爲它是C++而不是C.引用提供了不同的語法和語義。如果你不知道它們是什麼,我建議你閱讀一本好的入門C++書。 –

+0

非常感謝! –

2

第一個就是一個Vector3f通過refetence,並通過引用返回Vec3torf的差異。第二個接受和返回值(即在語義上它使得參數的副本以及*this)。