《Effective C 》讀書筆記 條目篇

2021-09-27 13:20:20 字數 2149 閱讀 2110

文|seraph

條目篇主要是記錄得出的結果,用作以後翻查遵循。

以下是本書的翻譯中英術語表:

英文術語

中文譯詞

abstract

抽象的abstraction

抽象性、抽象件

本書的目的是強調那些常常被漠視的c++程式設計方向與觀點。

定義式(definition)的任務是提供編譯器一些宣告式所遺漏的細節。

建構函式要不沒有引數,要不就是每個引數都是預設值。

tr1(「technical report 1」)是乙份規範,描述加入c++標準程式庫的諸多新機能。

所有tr1元件都被置於命名空間tr1內,後者巢狀於命名空間std內。

boost是乙個組織,亦是乙個**,提供可移植、同僚複審、原始碼開放的c++程式庫。

條款 01:視c++為乙個語言聯邦

c++高效程式設計守則狀況而變化,取決於你使用c++的哪一部分。

c++有以下四個次語言:

條款 02:盡量以const、enum、inline替換#define

對於單純常量,最好以const物件或enums替換#define。

對於形似函式的巨集(macros),最好改用inline函式替換#define。

條款 03:盡可能使用const

條款 04:確定物件使用前被初始化條款 05:c++預設編寫並呼叫的函式

條款 06:不想使用預設生成的函式,可以明確拒絕

條款 07:多型基類宣告virtual析構函式

條款 08:別讓異常逃離析構函式

條款 09:不要在構造和析構函式呼叫virtual函式

條款 10:令operator=返回reference to *this

條款 11:在operator=中處理"自我賦值"

條款 12:複製物件的時候勿忘其每個部分條款 13:以物件管理資源

條款 14:在資源管理類中小心copy行為

條款 15:在資源管理類中提供對原始資源的訪問

條款 16:成對的使用new和delete

條款 17:以單獨的語句將newed物件置入shared_ptr條款 18、讓介面容易被正確使用,不易被誤用

條款 19、設計class

條款 20、以pass-by-reference-const替換pass-by-value

條款 21、不要返回臨時物件的引用

條款 22、將成員變數宣告為private

條款 23、寧以non-member、non-friend函式替換member函式

條款 24、若所有引數皆需型別轉換,那麼請採用non-member函式

條款 25、寫乙個不丟擲異常的swap函式條款 26、盡可能延後變數定義得時間

條款 27、盡量避免轉型

條款 28、避免返回乙個指標、引用或者迭代器指向類內的成員

條款 29、異常安全函式

條款 30、inline 函式

條款 31、編譯依存關係降低至最低條款 32、確保public繼承是is-a關係

條款 33、名稱遮掩問題

條款 34、介面繼承與實現繼承

條款 35、考慮virtual函式以外的選擇

條款 36、不要重新定義繼承來的non-virtual函式

條款 37、不要重新定義重寫函式(virtual)的預設引數

條款 38、類與類之間的關係:復合(has a的關係)

條款 39、私有繼承

條款 40、多重繼承條款 41、隱式介面和編譯器多型

條款 42、了解typename

條款 43、呼叫基類模板成員

條款 44、將與template引數無關的**抽離到模板外

條款 45、運用成員函式模板接受所有相容型別

條款 46、需要型別轉換時請為模板定義非成員函式

條款 47、traits程式設計技巧

條款 48、模板元程式設計條款 49、了解new-handler的行為

條款 50、了解new和delete的合理替換時機

條款 51:編寫new和delete時需固守常規

條款 52:寫了placemant new也要寫placement delete條款 53:不要輕忽編譯器的警告

條款 54:讓自己熟悉包括tr1在內的標準程式庫

條款 55:讓自己熟悉boost

《effective C 》讀書筆記

1,c 關鍵字explicit c 中,乙個引數的 建構函式 或者除了第乙個引數外其餘引數都有預設值的多參建構函式 承擔了兩個角色。1 是個 構造器,2 是個預設且隱含的型別轉換操作符 所以,有時候在我們寫下如 aaa 這樣的 且恰好 的型別正好是aaa單引數構造器的引數型別,這時候 編譯器就自動呼...

Effective C 讀書筆記

一 讓自己習慣c 1 條款01 視c 為聯邦語言 c 的組成可分為四部分 1.c c 仍然以c語言為基礎。區塊 語句 預處理 內建資料型別 陣列 指標等都來自c。2.object oriented c c with classes所訴說的 classes 包括構造和析構 封裝 繼承 多型 virtu...

讀書筆記 Effective C

部分條款過於深奧,部分條款已了然於心,僅記錄當下所識所學 對於常量巨集定義,最好用const代替 define 對於函式巨集定義,最好用inline代替 define include ifdef ifndef仍被需要 內建物件記得手動初始化 使用成員初始列替換賦值操作 以local static替換...