2016-03-02 38 views
0

我有一個類的頭文件叫做串行內超載:serial.h瞭解操作Singleton模式

這裏面的頭文件,我有以下類型的操作超載:

private: 
    ... 
    Serial & operator = (const Serial &); 

我知道,這就像here

我還looked up操作過載,發現賦值運算符的以下示例的單例模式的一部分:

void operator=(const Distance &D) 

但是「&」是什麼意思?它是如何工作的?

回答

1

運算符重載和&符號與Singleton直接無關。 「&」符號表示操作員接受引用而不是其他Serial的副本,並返回對Serial的引用(並且不是副本)。

在單身人士中這很重要,但是您可以(也應該)在沒有單身人士的情況下使用它。

+0

所以'Serial operator =(const Serial);'會給一個Serial對象的一個​​常量副本? AND如果我會寫: 'Serial&operator =(const Serial&);'OR'Serial&operator =(const Serial&);'OR'Serial&operator =(const Serial&); Serial&operator =(const Serial&);'? – goulashsoup

+0

'串行運算符=(常量串行)'將獲取一個串行的恆定副本並返回一個非常量串行對象。根據你的實現和編譯器優化,返回值可能是複製的,但是它是一個右值而不是左值,所以像'serial1 = serial2 = serial3'這樣的東西就會失效。最好是你按照πάνταῥεῖ提供的重複鏈接,在那裏詳細解釋一切。空格的放置在這裏不會改變任何東西。 – Anedar