1. 程式人生 > >《Effective C++》筆記 01

《Effective C++》筆記 01

1 - 讓自己習慣 C++

C++ 語言是一門有著眾多特性的語言,要發揮其真正的、全部威力,還是要去掌握這些特性,並且是深入理解。這裡第一章 4 個條款,是 C++ 語言的,也是這裡全部 55 條條款的最基礎性的東西,是應當首先掌握的。

條款 01 - 視 C++ 為一個語言聯邦

  • C++ 高效程式設計守則視狀況而變化,取決於你使用 C++ 的哪一部分。
  • 組成 C++ 的 4 個主要次語言(sublanguage)
    • C
    • Object-Oriented C++
    • Template C++
    • STL

條款 02 - 儘量以 const、enum、inline 替換 #define

  • 對於單純常量,最好以 const 物件或 enums 替換 #defines 。
  • 對於形似函式的巨集(macros),最好改用 inline 函式替換 #defines 。

條款 03 - 儘可能使用 const

  • 將某些東西宣告為 const 可幫助編譯器偵測出錯誤用法。const 可被施加於任何作用域內的物件、函式引數、函式返回型別、成員函式本體。
  • 編譯器強制實施 bitwise constness,但你編寫程式時應該使用“概念上的常量性”(conceptual constness)。
  • 當 const 和 non-const 成員函式有著實質等價的實現時,令 non-const 版本呼叫 const 版本可避免程式碼重複。

條款 04 - 確定物件被使用前已先被初始化

  • 為內建型物件進行手工初始化,因為 C++ 不保證初始化它們。
  • 建構函式最好使用成員初始列(member initialization list),而不要在建構函式本體內使用賦值操作(assignment)。初始列列出的成員變數,其排列次序應該和它們在 class 中的宣告次序相同。
  • 為免除“跨編譯器單元之初始化次序”問題,請以 local static 物件替換 non-local static 物件。

廖傑良 - 2018-11-9