c++primer第十四章重載運算與類型轉換小結-14

第十四章----重載運算與類型轉換

1、重載運算符是特殊的函數,它們的名字由operator和其後要重載的運算符號共同組成。 因爲重載運算符時函數, 因此它包含返回值、參數列表和函數體。對於重載運算符是成員函數時, 它的第一個運算對象被隱式的綁定到this指針上,因此,成員函數的重載運算符的顯示參數數量比運算符的運算對象少一個。對一個運算符函數來說, 要麼它是一個類的成員函數, 或者它的參數至少包含一個類類型。

2、某些運算符不應該被重載:對於邏輯與&&、邏輯或 || 和逗號運算符來說,重載它們會無法保留下來它們的運算對象的求值順序。 而且對於&& 和 || 來說,它們具有的短路求值屬性也無法保留。對於取地址運算符,它又特定的內置含義,它也不該被重載。在C++中只有作用域操作符(::)、條件操作符(?:)不能重載。

3、重載運算符應該和內置類型一樣的含義:如果類執行IO操作,則定義移位運算符使其與內置類的IO 一致。一般定義了相等性運算符==,那麼也應該定義!= 運算符。一個類定義了一個比較運算符,那麼它也應該定義其他比較運算符。重載運算符的返回類型應該和內置版本的返回類型一致。

4、賦值(=)、 下標([])、調用(())和成員訪問箭頭運算符必須定義爲成員函數,

複合賦值運算符一般定義爲成員函數,但不是必須的
改變對象狀態的運算符或者與給定類型密切相關的運算符,如遞增、遞減和解引用運算符,一般定義爲成員函數具有對稱性的運算符可能轉換任意一端的運算對象,例如算術、相等性、關係和位運算符等,通常應該爲非成員函數。

5、輸出運算符的第一個形參是一個非常量的ostream對象的引用,第二個形參一般是一個常量的引用,因爲輸出運算符不會改變參數的值

6、類型轉換操作符重載:
類設計者可以設計類型轉換操作符重載,用以將類類型轉換爲需要轉換到的類型,該轉換過程爲隱式類型轉換。編譯器只能夠從類

類型轉換到相應類型一次,如果需要多次轉換則只能跟標準庫轉換,不能連續多次類類型轉換,即不能遞歸轉換。標準轉換可以放

在類類型轉換之前。可以利用類類型轉換操作符重載與構造函數實現類類型與內置類型的相互轉換。

7.不能重載的運算符有四個,   ::  .*    .   ? .  ,有一些不應該被重載。重載運算符主要爲類準備的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章