《Effective C++讀書筆記》--條款03:儘可能使用const


--1、const修飾指針和對象的不同方法:

對於const時代表指針指向的地址是const還是該指針指向的地址內的對象是const,只需牢記一點:如果關鍵字const出現在*左邊,表示被指物是常量,如果出現在*右邊,表示指針本身是常量。

在STL中來說,聲明迭代器爲const就如同聲明指針爲const一樣(const在*右邊),表示迭代器不得指向不同的東西,但它所指向的東西的值可以改變。如果希望所指東西的值不可改動(const在*左邊),則需要使用const_iterator。

--2、令函數返回一個const:
令函數返回一個const,往往可以降低因爲用戶錯誤而造成的意外,又不至於放棄安全性和高效性。所以如果不需要改動參數時,儘量將其定義爲const.。


--3、const成員函數:
將成員函數設爲const,是爲了明確告訴我們該成員函數可以作用於const對象,const成員函數不可以修改其中成員變量的值(除非將成員變量聲明爲mutable),其作用有兩點:

一:我們可以得知哪個函數可以改動對象,哪個函數不行。

二:const成員函數可以被const對象所調用。

有一點容易被人們所疏忽的就是兩個成員函數如果只是const不同,可以被重載。


--4、在const和no-const成員函數中避免重複:
當有兩個版本的成員函數時,裏面有大量的重複代碼,區別主要在於一個是const一個是no-const成員函數,此時有兩種解決方法。一是將重複代碼遷移到另一個成員函數中。二是利用轉型另no-const版本一個調用const版本,文中描述使用const_cast將返回的const轉化爲非const即可。


--5、bitwise constness:
對於編譯器,檢查常函數時只需要檢查成員變量的賦值動作,但這種情況並不能完全禁止改變其值,具體可參考原書的內容。

發佈了73 篇原創文章 · 獲贊 15 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章