(三)在構造函數使用new時應注意的事項
(1)如果在構造函數中使用new來初始化指針成員,則應在析構函數中使用delete來釋放內存。
(2)new和delete必須兼容,new和delete對應,new name[]和delete []name相對應。
(3)如果有多個構造函數,應該以相同的方法使用new,要麼帶[],要麼不帶(因爲只有一個析構函數)。另外,delete,無論帶不帶[]都可以用於空指針。空指針表示法,傳統的是NULL或0(NULL是0的符號表示),現在可以使用nullptr,這是一種個更好的選擇。
(4)應該定義一個複製構造函數,通過深度複製將一個對象初始化爲另一個對象。
(5)應當定義一個賦值運算符(運算符重載),通過深度複製將一個對象賦值給另一個對象。具體需要完成的工作是:檢查自我賦值的情況;釋放成員指針以前指向的內存;複製數據而不僅僅是數據的地址;返回一個指向調用對象的引用。