讓自己習慣C

2021-10-21 02:00:50 字數 1212 閱讀 9719

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 物件導向這一特性包含了 類,封裝 宣告與實現相分離 繼承 多繼承和多重繼承 建構函式 析構函式 拷貝建構函式 拷貝賦值運算子 多型 靜態繫結 函式過載,動態繫結 虛函式...