0. preface(前言)
要認真弄清楚每個條款,還是很有必要自己讀一下《effective c++》
寫此篇部落格單純為了記錄下相關知識,以便日後複習…
1. view c++ as a federation of languages. (視c++為乙個語言聯邦)
c++可以看作由四種次語言組成:
cobject-oriented c++
template c++
stl
2. prefer consts, enums, and inlines to #defines. (盡量以const, enum, inline 替換 #define)
#define node_number 1000
如上**所示,node_number可能未出現在記號表中。當出現編譯錯誤時,錯誤資訊可能會提及1000而不是node_number;如果node_number被定義在乙個非你所寫的標頭檔案內,你肯定對這個數感到困惑。
請記住:
對於單純常量,最好以 const 物件或 enums 替換 #defines。
對於形似函式的巨集(macros),最好改用 inline 函式替換 #defines。
3. use const whenever possible. (盡可能使用const)
將某些東西宣告為 const 可幫助編譯器偵測出錯誤用法。 const 可被施加於任何作用域內的物件、函式引數、函式返回型別、成員函式本體。
編譯器強制實施 bitwise constness,但你編寫程式時應該使用「概念上的常量性」 (conceptual constness)
當 const 和 non-const 成員函式有著實質等價的實現時,令 non-const 版本呼叫 const 版本可避免**重複。
4. make sure that objects are initialized before they』re used. (確定物件被使用前已先被初始化)
為內建型物件進行手工初始化,因為c++不保證初始化它們。
建構函式最好使用成員初值列(member initialization list),而不要在建構函式本體內使用賦值操作(assignment)。初值列列出的成員變數,其排列次序應該和它們在 class 中的宣告次序相同。
為免除「跨編譯單元之初始化次序」問題,請以 local static 物件替換 non-local static 物件。
讓自己習慣c
c 是個多重范型程式語言,乙個同時支援過程形式 物件導向形式 函式形式 泛型形式 元程式設計形式的語言 1.c 區塊 語句 預處指標等來自於c。2.object oriented c class,封裝 繼承 多型等等 這部分是物件導向設計之古典守則在c 上最直接的實施。3.template c 這部...
effective c 讓自己習慣c
一 忠告 a 對於常量,用const和 enum 代替define b 對於形似函式,用inline代替 define 二 盡量替換掉define的原因 a define a 1.63出錯時,報 1.63 出錯 const int a 1.63 出錯時,報 a出錯。顯然報變數名出錯更加容易除錯 b ...
Effective C 讓自己習慣C
c 的四個語言層次 c c 是以c為基礎的。基本資料型別 語句 預處理器 陣列 指標等統統來自c。oject oriented c 物件導向這一特性包含了 類,封裝 宣告與實現相分離 繼承 多繼承和多重繼承 建構函式 析構函式 拷貝建構函式 拷貝賦值運算子 多型 靜態繫結 函式過載,動態繫結 虛函式...