話說光看這50個tip又有什麼用呢?只有實際使用的時候才體現它們的價值才對。從c轉向c++就像只看《**大全》不能成為乙個好程式設計師,必須結合實際寫專案經驗才行。
條款1:盡量使用const和inline而不用#define
條款2:盡量用而不用
條款3:盡量用new和delete而不用molloc和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++在幕後為你所寫的、所呼叫的函式
條款47:確保非區域性靜態物件在使用前被初始化
條款48:重視編譯器警告
條款49:熟悉標準庫
條款50:提高對c++的認識
effective c 條款01 整理
書中將c 劃分為4個次語言,期望將混亂的c 體系進行簡單的梳理,只能說目的達到了,但這麼分合適不合適呢?不知道.1 c c without class 初級c 確實是對c的延生,這也涉及到c 是否應該嚴格相容c的問題,歷史問題不去評判,但這是事實。2 物件導向c object oriented c ...
effective c 條款02 整理
盡量以const enum和inline代替 define 一 define的功能 參考 1 define的變體,即 ifndef,可以防止頭頭檔案的重複引用 ifdef和 define組合,一般用於標頭檔案中,用以實現防止多個檔案對此同乙個標頭檔案的重複引用.實際使用中,即使你的標頭檔案暫時沒有被...
Effective C 要點整理(一)
c 曾明確指出,當派生類 derived class 物件經由乙個基類 base class 指標被刪除,而該基類還帶著乙個non virtual析構函式,其結果未有定義 實際執行時通常發生的是物件的派生成分沒被銷毀。而其基類成分通常會被銷毀,於是造成乙個詭異的 區域性銷毀 物件。這會造成資源洩露 ...