Effective cpp 讀書筆記5

2021-07-11 21:30:18 字數 506 閱讀 7125

切記將成員變數宣告為private。這可賦予客戶訪問資料的一致性、可細微劃分訪問控制、允諾約束條件或的保證,並提供class作者以充分的實現彈性

protected並不比public更具封裝性

這樣做可以增加封裝性、包裹彈性和技能擴充性

目的是為了保證函式一致性。典型例子是過載類的運算子operator*,如果是member函式,則運算子不支援交換律,影響使用。

從封裝的角度看,friend和member函式一樣,無論何時,如果可以避免使用friend函式就應該避免

當std::swap對你的型別效率不高,則提供乙個swap函式,並確定它不丟擲異常

如果你提供乙個member swap,也該提供乙個non-member swap來呼叫前者。對於自定義的class,需要特化std::swap

呼叫swap應該針對std::swap使用using宣告,然後呼叫swap並且不帶任何命名空間資格修飾

為使用者定義型別進行std template全特化是好的,但不要在std中加入新東西

Effective cpp 讀書筆記1

本週內,每天更新。c 的特性主要 四個大方面 四個次語言 結論 壞處用const取代 用enum取代 用inline取代 結論 注意 const成員函式 bitwise constness 編譯器就是這種 和logical constness 在const和non const成員函式中避免重複 結論...

Effective cpp 讀書筆記2

c 默默編寫的函式 程式設計師沒有宣告的前提下 default建構函式 copy建構函式 copy assignment操作符 default析構函式 非virtual 編譯器產出的函式都是public的 關於建構函式,如果使用者定義了至少一種,就不會有預設建構函式 結論 自行宣告和定義 將對應的函...

Effective cpp 讀書筆記9

當我們編寫乙個class template,而它所提供的 與此template相關的 函式支援 所有引數之隱式型別轉換時 請將那些函式定義為 class template內部的friend函式 個人理解 template實參推導過程中,從來不將隱式型別轉換函式納入考慮。這樣的轉換咋函式呼叫過程中確實...