類設計者的檢查清單

——————摘自C++沉思錄

(注:其中加了一些個人的註釋)

1.你的類需要構造函數嗎?

2.你的數據成員是私有的嗎?

3.你的類需要一個無參構造函數嗎?如果使用了自定義的構造函數,那麼編譯器不會默認生成構造函數,這時候如果需要調用無參構造函數,則必須我們自己顯示地寫一個。如果爲了阻止無參數實例化,還需要考慮數組的問題。

 

4.是不是每個構造函數初始化所有的數據成員?

5.類需要析構函數嗎?  三五法則

6.類需要一個虛析構函數嗎? 只要有人可能對指向子類的對象父類指針調用delete表達式,父類就需要一個虛析構函數。

 

7.你的類需要複製構造函數嗎?

關鍵在於複製該類對象是否相當於複製其數據成員和基類對象。如果並不相當,就需要複製構造函數。

需要析構函數的類往往也需要拷貝和賦值操作。

需要拷貝操作的類也需要賦值操作,反之亦然。

如果不希望用戶複製類的對象,就聲明覆制構造函數(賦值運算符)爲私有的。

 

8.你的類需要一個賦值操作符嗎?

如果需要複製構造函數,往往也還會需要賦值操作符

 

9.你的賦值操作符能夠正確地將對象賦給對象本身嗎?

自複製問題 ————先釋放舊值,再複製

 

10.記得在複製構造函數和賦值操作符的參數類型上加 const 了嗎?(X::X(const X&) )

 

11.你的類需要定義關係操作符嗎?

將類的對象放在容器使用中可能涉及到 == 或 != 以及比較大小等問題。

 

12.刪除數組時 你記住用delete[] 嗎?

 

13.如果函數有引用參數,它們應該是const引用嗎?

只有當函數想改變參數時,參數纔是非const的。

 

14.記得適當聲明成員函數爲const的嗎?

只有將成員函數聲明爲const的,才能把它用於const對象。

 

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