effective c 條款11學習總結

2021-05-24 06:03:05 字數 346 閱讀 4551

1.為需要動態分配記憶體的類宣告乙個拷貝建構函式和乙個賦值操作符:

只要類裡有指標時,就要寫自己版本的拷貝建構函式和賦值操作符函式。在這些函式裡,你可以拷貝那些被指向的資料結構,從而使每個物件    都有自己的拷貝;或者你可以採用某種引用計數機制去跟蹤當前有多少個物件指向某個資料結構。引用計數的方法更複雜,而且它要求構造函    數和析構函式內部做更多的工作,但在某些(雖然不是所有)程式裡,它會大量節省記憶體並切實提高速度。

拷貝可以是顯式呼叫拷貝建構函式,或者函式引數傳值以及函式返回值的時候。

如果過於複雜,可以只宣告這些函式(宣告為private成員)而不去定義(實現)它們。這就防止了會有人去呼叫它們,也防止了編譯器去生成它們。

Effective C 筆記 條款11

為什麼會出現自我賦值呢?不明顯的自我賦值,是 別名 帶來的結果 所謂 別名 就是 有乙個以上的方法指涉物件 一般而言如果某段 操作pointers或references而它們被用來 指向多個相同型別的物件 就需要考慮這些物件是否為同乙個。實際上兩個物件來自同乙個繼承體系,它們甚至不需要宣告為相同型別...

Effective C 條款11 不止於此

自我賦值 發生在物件被賦值給自己時 class getself getself w w w 賦值給自己 看起來似乎有些愚蠢,但不乏有人這樣做還有一些潛在不容易看出來的自我賦值 a i a j 潛在的自我賦值 如果 i j,那麼便是自我賦值再看 ptr qtr 潛在的自我賦值 如果 ptr 和 qtr...

Effective C 經驗條款

高效c 4 必須返回物件時,別妄想返回其reference 這句話什麼意思呢?就是在乙個函式內,如果你需要這個函式返回乙個新的物件,那麼這個函式的返回值型別就不要定義成引用型別。就直接返回這個類型別。首先,我們知道在函式傳遞引數時,傳遞引用的好處,尤其是對那麼比較大的型別,但是對於內建型別和stl的...