1.讓自己習慣C++
條款01:視C++為一個語言聯邦
條款02:盡量以const,enum,inline替換#define
條款03:盡可能使用const
條款04:確定對象被使用前已先被初始化
2.構造/析構/賦值運算
條款05:了解C++默默編寫并調用哪些函數
條款06:若不想使用編譯器自動成生的函數,就該明確拒絕
條款07:為多態基類聲明Virtual析構函數
條款08:別讓異常逃離析構函數
條款09:絕不在構造和析構過程中調用Virtual函數
條款10:令Operator=返回一個referenceto this
條款11:在Operator=中處理“自我賦值”
條款12:復制對象時勿忘其每一個成分
3.資源管理
條款13:以對象管理資源
條款14:在資源管理類中小心Coping行為
條款15:在資源管理類中提供對原始資源的訪問
條款16:成對使用new和delete對象置入智能指針
條款17:以獨立語句將newed對象置入智能指針
4.設計與聲明
條款18:讓接口容易被正確使用,不易被誤用
條款19:設計class猶如設計type
條款20:寧以pass-by-reference-to-const替換Pass-by-value
條款21:必須返回對象時,別妄想返回其reference
條款22: 將成員變量聲明為private
條款23: 寧以non-member、non-friend替換member函數
條款24:若有所參數皆需類型轉換,請為此采用non-member函數
條款25:考慮寫出一個不拋異常的swap函數
5.實現
條款26:盡可能延后變量定義式的出現時間
條款27:盡量少做轉型動作
條款28:避免返回handles指向對象內部成分
條款29:為“異常安全”而努力是值得的
條款30:透徹了解inlining的里里外外
條款31:將文件間的編譯依存關系降至最低
6.繼承與面向對象設計
條款32:確定你的public繼承塑模出is-a關系
條款33:避免遮掩繼承而來的名稱
條款34:區分接口繼承和實現繼承
條款35:考虛virtual函數以外的其他選擇
條款36:絕不重新定義繼承而來的non-virtual函數
條款37:絕不重新定義繼承而來的缺省參數值
條款38:通過復合塑模出has-a或“根據某物實現出”
條款39:明智而審慎地使用private繼承
條款40:明智而審慎地使用private繼承
7.模板與泛型編程
8.定制new和delete
9.雜項討論
posted on 2010-02-24 11:41
思月行云 閱讀(429)
評論(0) 編輯 收藏 引用