effectivecpp讀書筆記1

2021-08-08 17:32:20 字數 930 閱讀 3049

非內建型別的成員變數最好都用初始化列表初始化,因為在建構函式執行前,會先初始化這個物件內部的成員,若是有初始化列表,則按初始化列表來初始化,若是沒有,則自動執行成員的預設建構函式。看下面的例子

#include 

class a

a(int x)

};class b

b(const a &a)

};int main()

程式的輸出是

wd@ub-linux:effective_cpp$ ./a.out 

a constructor

with

para

default

constructor

bconstructor

with

par

可以看到先構造a(1),然後在構造b時,由於b內部有成員a,於是要先初始化a,於是呼叫a的預設建構函式。但實際上這一步是多餘的,相當於b.a被賦值了兩次。

在看下面的寫法

#include 

class a

a(int x)

a(const a& a)

};class b

b(const a &a):a(a)

};int main()

這次的輸出是

a constructor

with

para

copy

constructor

bconstructor

with

par

b的建構函式中沒有了賦值操作,但是把b.a的初始化放在了初始化列表裡面,這樣b.a就只初始化了一次。可以說這一操作是非常重要的,在一些比較大的類中,可以節省很多不必要的賦值操作。

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 讀書筆記5

切記將成員變數宣告為private。這可賦予客戶訪問資料的一致性 可細微劃分訪問控制 允諾約束條件或的保證,並提供class作者以充分的實現彈性 protected並不比public更具封裝性 這樣做可以增加封裝性 包裹彈性和技能擴充性 目的是為了保證函式一致性。典型例子是過載類的運算子operat...