常量對象與常量成員函數

常量對象與常量成員函數

常量對象與常量成員函數來防止修改對象,實現最低權限原則。

可以用關鍵字const來指定對象是不可修改的,任何修改該對象的企圖,都會導致編譯錯誤。

例如:const Time noon(12,0,0);    聲明一個Time 類的常量對象noon,並將它初始化爲中午12點。

C++不允許在常量對象上調用成員函數,除非成員函數本身也被聲明爲常量。甚至對不會修改對象的成員函數,也是如此,此外,編譯器不允許聲明常量的成員函數修改對象。

對一般情況下,通常修改對象的構造函數和析構函數而言,它們不允許被聲明成const

關於常量對象和常量成員函數的使用方法如下:

(1)非常量對象調用非常量成員函數         (正確)

(2)非常量對象調用常量成員函數           (正確)

(3)常量對象調用常量成員函數             (正確)

(4)常量對象調用非常量成員函數           (錯誤)

儘管構造函數必須是非常量成員函數,但它仍然可用於初始化常量對象。

常量對象的“常量性”是在構造函數完成了對象的初始化之後生效的,持續到調用了對象的析構函數。

成員函數沒有修改對象的事實,並不足以表明它就是常量函數,常量函數必須顯式地用const聲明。

常量成員函數的初始化必須用初始化列表。

例如:Increment::Increment(int c,int i) : count(c),increment(i);{}

初始化列表出現在構造函數的參數表 和 表示構造函數函數體開始的左大括號之間。成員初始化列表用冒號和參數表隔開。

量數據成員(常量對象和常量變量)以及被聲明爲引用的數據成員,都必須用成員初始化列表初始化,在構造函數中對這些類型的數據賦值是不允許的。

 

參考資料:《c++程序員教程》 電子工業出版社 張良華等譯   P273-P280

轉自:http://blog.csdn.net/feitianxuxue/article/details/7311055

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