1.讓自己習慣c++
2、盡量以const、enum、inline 替換 #define
3、盡可能使用const
4、確定物件被使用前已經被初始化
2.構造/析構/賦值運算
5、了解c++默默編寫並呼叫哪些函式--建構函式、拷貝建構函式、賦值運算子、析構函式
6、若不想使用編譯器自動生成的函式,就應該明確拒絕
7、為多型宣告virtual析構函式
8、別讓異常逃離析構函式
9、絕不在建構函式和析構函式過程中呼叫virtual函式
12、複製物件勿忘其每乙個成分
3.資源管理
13、以物件管理資源
14、在資源管理類中小心coping行為
15、在資源管理類中提供對原始資源的訪問
16、成對使用new 和delete
4.設計與宣告
18、讓介面容易被正確使用,不易被誤用
19、設計class 猶如設計type
20、盡量傳遞引用
21、必須返回物件時,別妄想返回其引用
22、將成員變數宣告為private
23、寧以non-member/non-friend 替換member函式
24、若所有引數皆需要型別轉換,請為此採用non-member函式
25、考慮寫出乙個不丟擲異常的swap函式
5.實現
26、盡可能延後變數定義式的出現時間
27、盡量少做轉型動作
28、避免返回handles指向物件內部成分
29、為「異常安全」而努力是值得的
31、將檔案間的編譯依存關係降至最低
6.繼承與物件導向設計
32、確定你public繼承is-a 關係
34、區分介面繼承和實現繼承
35、考慮virtual函式以外的其他選擇
36、絕不重新定義繼承而來的non-virtual函式
37、絕不重新定義繼承而來的預設引數值
38、通過復合塑膜出has-a
39、明智而謹慎的使用多重繼承
40、了解隱式介面和編譯期多型
7.模板與泛型程式設計
43、學習處理模板化基類內的名稱(使用this->呼叫模板基類方法)
44、將與引數無關的**抽離template
45、運用成員函式模板接受所有相容型別
46、需要型別轉換時請為模板定義非成員函式(見條款24)
48、認識template元程式設計
49、了解new-handler的行為 ---一切的指標都應該判空
50、了解new 和delete 的合理替換時機
51、編寫new和delete時需固守常規
52、寫了placement new 也需要寫placement delete
53、不要輕忽略編譯器警告
54、讓自己熟悉包括tr1在內的標準程式庫
55、讓自己熟悉boost
efficient和effective的區別
efficient 高效的 effective 有效的 就是 高效的和有效的 這個區別 an efficient secretary 工作效率高的秘書 an effective medicine for hair loss 一種 脫髮的有效藥舉個栗子,從武漢到北京,有多種交通方式,例如飛機 高鐵 汽...
effective35 基礎議題
1.仔細區別pointers和references 2.最好使用c 轉型操作符 3.絕對不要以多台方式處理陣列 4.非必要補提供default construnctors 指標 這玩意相信大家都不陌生了.萬惡之源 引用 這是我在學了c 之後新接觸的東西,乍看很高階,其實底層的實現也就是乙個指標.vs...
Effective 12 16 資源管理
資源 用了就必須還給系統的 如動態分配的記憶體 檔案描述符 互斥鎖 網路socket等 void f 上面是用delete刪除指定的,但如果在f函式中有多處進行return或是丟擲異常等行為,則不會執行到delete,因此造成記憶體洩露 為此我們可以將申請的資源放進物件內,當控制流離開f時會自動呼叫...