1. 程式人生 > >王小鬧兒的進階之路 (ง •̀_•́)ง

王小鬧兒的進階之路 (ง •̀_•́)ง

class with point member(帶指標的類),一定有copy ctor(拷貝構造)和copy op=(拷貝賦值)

淺拷貝(講這個概念是為了跟你解釋為什麼一定要寫自己的版本):

如果你不寫拷貝構造和拷貝賦值,系統會為你預設生成這兩個函式。

而用系統裡面預設生成的函式,則會發生下圖中a和b的指標都指向“HELLO”,而“WORLD”沒有指標指著它(這種情況叫記憶體洩漏)。

兩個指標指向同一塊記憶體也是危險的,因為你通過a改變字串的時候,b所指的內容也會隨之改變。如圖:

在程式設計裡面。alias(別名)是一件危險的事情。

深拷貝如下圖(拷貝構造的例子)

上圖是自己寫的拷貝建構函式:呼叫該函式之後,系統先申請記憶體,然後把傳入的引數拷貝到新申請的空間上,這就是深拷貝。