越來越討厭C++了,一個簡單的const成員變量都搞得這麼麻煩。
概念:const成員變量、const成員函數、const類變量
- const成員變量是初始化後就不能再改變的。在整個過程中都始終如一。素以不允許有賦值操作。
- const成員函數是保證不會修改成員變量的成員函數。
- const類變量是指聲明一個類變量時使用了const,比如const A a;
意義:
規則:
規則一:
const成員變量只能在構造函數的初始化列表中初始化,不能在構造函數體內賦值。否則會產生只讀數據的寫錯誤。
規則二:
const成員變量不能出現任何賦值操作。
規則三:
非const成員函數和const成員函數都可以讀訪問非const類變量的const或非const成員變量。
規則四:
非const成員函數不可以訪問const類變量的任意成員變量。只有const成員函數可以。
規則五:
const成員函數中不允許有任何對成員變量的賦值操作。(保證其不會修改成員變量值)
規則六:
const成員函數不能調用非const成員函數。(還是爲了保證不會修改成員變量值,天知道你調用的非const成員函數會幹什麼)
價值觀:(這些能幫助你理解記憶)
const變量:我是永恆的,任何賦值操作都是對我的侮辱。(規則一二)
const成員函數:所謂瓜田不納履,李下不整冠,我懂得避嫌(規則五);而且我任人唯信,那些沒有const認證的傢伙有好有壞,我不能信任它們。我知道它們中間可能有好人,但得排除風險不是嗎?(規則六)
const類變量:我出生時就打上了const的高貴印記,我只能做出高尚的行爲。(規則四)
實現原理:待續。。。