第十二章 類和動態內存分配(3)在構造函數使用new時應注意的事項

(三)在構造函數使用new時應注意的事項

(1)如果在構造函數中使用new來初始化指針成員,則應在析構函數中使用delete來釋放內存。

(2)new和delete必須兼容,new和delete對應new name[]和delete []name相對應

(3)如果有多個構造函數,應該以相同的方法使用new,要麼帶[],要麼不帶(因爲只有一個析構函數)。另外,delete,無論帶不帶[]都可以用於空指針。空指針表示法,傳統的是NULL或0(NULL是0的符號表示),現在可以使用nullptr,這是一種個更好的選擇。

(4)應該定義一個複製構造函數,通過深度複製將一個對象初始化爲另一個對象。

(5)應當定義一個賦值運算符(運算符重載),通過深度複製將一個對象賦值給另一個對象。具體需要完成的工作是:檢查自我賦值的情況;釋放成員指針以前指向的內存複製數據而不僅僅是數據的地址;返回一個指向調用對象的引用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章