條款 1:盡量用 const 和 inline 而不用#define
條款 2:盡量用而不用<stdio.h>
條款 3:盡量用 new 和 delete 而不用 malloc 和 free
條款 4:盡量使用 C++風格的注釋
條款 5:對應的 new 和 delete 要采用相同的形式
條款 6:析構(gòu)函數(shù)里對指針成員調(diào)用 delete
條款 7:預先準備好內(nèi)存不夠的情況
條款 8. 寫 operator new 和 operator delete 時要遵循常規(guī)
條款 9. 避免隱藏標準形式的 new
條款 10. 如果寫了 operator new 就要同時寫 operator delete
條款 11: 為需要動態(tài)分配內(nèi)存的類聲明一個拷貝構(gòu)造函數(shù)和一個賦值操作符
條款 12: 盡量使用初始化而不要在構(gòu)造函數(shù)里賦值
條款 13: 初始化列表中成員列出的順序和它們在類中聲明的順序相同
條款 14: 確定基類有虛析構(gòu)函數(shù)
條款 15: 讓 operator=返回*this 的引用
條款 16: 在 operator=中對所有數(shù)據(jù)成員賦值
條款 17: 在 operator=中檢查給自己賦值的情況
條款 18: 爭取使類的接口完整并且最小
條款 19: 分清成員函數(shù),非成員函數(shù)和友元函數(shù)
條款 20: 避免 public 接口出現(xiàn)數(shù)據(jù)成員
條款 21: 盡可能使用 const
條款 22: 盡量用“傳引用”而不用“傳值”
條款 23: 必須返回一個對象時不要試圖返回一個引用
條款 24: 在函數(shù)重載和設(shè)定參數(shù)缺省值間慎重選擇
條款 25: 避免對指針和數(shù)字類型重載
條款 26: 當心潛在的二義性
條款 27: 如果不想使用隱式生成的函數(shù)就要顯式地禁止它
條款 28: 劃分全局名字空間
條款 29: 避免返回內(nèi)部數(shù)據(jù)的句柄
條款 30: 避免這樣的成員函數(shù):其返回值是指向成員的非 const 指針或引用,
但成員的訪問級比這個函數(shù)要低
條款 31: 千萬不要返回局部對象的引用,也不要返回函數(shù)內(nèi)部用 new 初始化的
指針的引用
條款 32: 盡可能地推遲變量的定義
條款 33: 明智地使用內(nèi)聯(lián)
條款 34: 將文件間的編譯依賴性降至最低
條款 35: 使公有繼承體現(xiàn) "是一個" 的含義
條款 36: 區(qū)分接口繼承和實現(xiàn)繼承
條款 37: 決不要重新定義繼承而來的非虛函數(shù)
條款 38: 決不要重新定義繼承而來的缺省參數(shù)值
條款 39: 避免 "向下轉(zhuǎn)換" 繼承層次
條款 40: 通過分層來體現(xiàn) "有一個" 或 "用...來實現(xiàn)"
條款 41: 區(qū)分繼承和模板
條款 42: 明智地使用私有繼承
條款 43: 明智地使用多繼承
條款 44: 說你想說的;理解你所說的
條款 45: 弄清 C++在幕后為你所寫、所調(diào)用的函數(shù)
條款 46: 寧可編譯和鏈接時出錯,也不要運行時出錯
條款 47: 確保非局部靜態(tài)對象在使用前被初始化
條款 48: 重視編譯器警告
條款 49: 熟悉標準庫
條款 50: 提高對 C++的認識