effective c 條款13學習總結

2021-05-24 06:22:35 字數 393 閱讀 3525

條款13: 初始化列表中成員列出的順序和它們在類中宣告的順序相同

如果成員按它們在初始化列表上出現的順序被初始化,那w1和w2中的資料成員被建立的順序就會不同。我們知道,對乙個物件的所有成員來說,它們的析構函式被呼叫的順序總是和它們在建構函式裡被建立的順序相反。那麼,如果允許上面的情況(即,成員按它們在初始化列表上出現的順序被初始化)發生,編譯器就要為每乙個物件跟蹤其成員初始化的順序,以保證它們的析構函式以正確的順序被呼叫。這會帶來昂貴的開銷。所以,為了避免這一開銷,同一種型別的所有物件在建立(構造)和摧毀(析構)過程中對成員的處理順序都是相同的,而不管成員在初始化列表中的順序如何。

只是非靜態資料成員的初始化遵守以上規則,另外,基類資料成員總是在派生類資料成員之前被初始化,所以使用繼承時,要把基類的初始化列在成員初始化列表的最前面。

effective c 條款13學習總結

條款13 初始化列表中成員列出的順序和它們在類中宣告的順序相同 如果成員按它們在初始化列表上出現的順序被初始化,那w1和w2中的資料成員被建立的順序就會不同。我們知道,對乙個物件的所有成員來說,它們的析構函式被呼叫的順序總是和它們在建構函式裡被建立的順序相反。那麼,如果允許上面的情況 即,成員按它們...

EffectiveC 學習筆記 條款13

條款13 以物件管理資源 物件管理資源,防止資源洩露 舉個最簡單例子 void func 假如中間出現了異常或者有return等。很有可能就忘記釋放記憶體。務必遵守以下幾點 獲取到資源後立即放入管理物件 管理物件運用析構函式確保資源被釋放 void func 另一種年代比較久遠的智慧型指標是auto...

Effective C 經驗條款

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