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