C++ Primer Chapter 14-2

1:輸入運算符必須處理輸入可能失敗的情況,而輸出運算符不是。要確保輸入數據的可靠性。

2:將算術運算符關係運算符定義成非成員函數,可以允許左右側對象進行轉換。因爲這些運算符不需要改變運算對象的狀態,所以一般不需要定義成成員函數,所以一般 運算對象爲常量引用

3:一般算術運算符的實現都用 符合賦值運算符(+=,-=等)實現。
  
4:定義類的 operator==  後,更容易使用標準容器和算法。定義了 operator== 後,也應該定義 operator!= 。反之亦然。相等不相等運算符的工作應該只委託一個一個調用被委託關係比較

5:如果存在唯一一種邏輯可靠的 < 定義,則應該考慮爲這個類定義 < 運算符

6:賦值運算符必須是成員函數,符合賦值運算符可以是成員函數,也可以是非成員函數,然而一般都作爲成員函數

7:下標運算符必須作爲成員函數,並且下標運算符返回一個元素的引用,要定義一個常量版本非常量版本。 要加 const 的限定符修飾調用對象的 this 指針,並且返回值也要是 const 修飾。

8:C++中定義的 ++ 和 -- 運算符有前置後置版本,在定義該類運算符時,我們用參數區分兩類版本不帶參數的爲前置版本帶參數(int)的爲後置版本。與內置版本保持一致,我們應該返回後至版本的原值後置版本利用前置版本實際運算。增加函數的可讀性是非常重要的。

9:重載箭頭運算符,我們要麼使用內置類型的 -> ,
  1. pointer->mem;

1)如果該調用 pointer 是一個類的指針,那麼則執行 (*pinter).mem 內置版本調用

2)如果 pointer 是一個對象,該對象定義了 operator->(),那麼執行 pointer.operator->() ,如果該調用結果返回的是一個指針則執行1)中過程,如果是一個對象,則執行2) 直到最後得到訪問結果

10:箭頭運算符返回的一定只能是指針或者是一個定義 operator->() 的類的對象

11:函數調用運算符,可以使得我們把一個類對象當做一個函數名來用。這樣就像調用一個函數名類對象名函數一樣(不是構造函數啊),完成某種功能。

12:如果一個類定義了函數調用運算符,我們稱該類是一個函數對象,因可以調用這種對象這些對象行爲像函數一樣

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