《Effective C++》筆記 01
阿新 • • 發佈:2018-11-12
1 - 讓自己習慣 C++
- 《Effective C++ —— 改善程式與設計的 55 個具體做法》,第 3 版。
- 豆瓣讀書:https://book.douban.com/subject/5387403/
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