1、類需要一個構造函數么?
2、數據成員是私有的么?
3、需要一個無參的構造函數么?
4、是不是每個構造函數初始化所有的數據成員?
5、類需要析構函數么?
6、類需要一個虛析構函數么?
當然,決不會用作基類的類是不需要虛析構函數的——“任何虛函數只在繼承的情況下才有用?!?/p>
假設有:D public: B
則只要有人可能會對實際指向D類型對象的B*指針執行delete表達式,你就需要給B加上一個虛析構函數。
例:
B* pbd = new D;
delete pbd;
7、你的類需要復制構造函數么?
如果類在構造函數內分配資源,則可能需要一個顯示的復制構造函數來管理資源;
如果不想用戶能夠復制類的對象,就聲明復制構造函數(可能還有賦值操作符)為私有的。
8、你的類需要一個賦值操作符么?
需要復制的構造函數,多半會需要。
9、你的賦值操作符能正確地將對象賦給對象本身么?(要先保存舊值,再賦新值,再刪除舊值。)
10、類需要定義關系操作符么?
11、刪除數組時,你記得使用 delete[] 了么?
12、記得在復制構造函數和賦值操作符的參數類型中加上 const 了么?
13、如果函數有引用參數,他們應該是 const 引用么?
14、記得適當地聲明成員函數為 const 的了么?
文字摘自《C++沉思錄》