C 拷貝構造 三

2021-08-04 13:31:03 字數 888 閱讀 8730

如果乙個類有指標,需要另外寫拷貝建構函式。否則,就會形成淺拷貝,造成兩個指標指向同乙個記憶體,在析構的時候出錯。

也就是說,淺拷貝會將指定物件的成員變數複製到目標物件,物件當中的指標成員變數也是。這會造成乙個問題,如果淺拷貝完成後釋放指定物件的指標成員變數指向的堆記憶體區域,目標物件對此並不知情,如果它對這塊記憶體進行操作,就會引發異常。

因此,需要定義乙個自己的拷貝構造。

另外一種拷貝建構函式的呼叫時機是當宣告乙個類的物件並賦值時:

int main()

c 拷貝構造

當用乙個已初始化過了的自定義類型別物件去初始化另乙個新構造的物件的時候,拷貝建構函式就會被自動呼叫。也就是說,當類的物件需要拷貝時,拷貝建構函式將會被呼叫。以下情況都會呼叫拷貝建構函式 乙個物件以值傳遞的方式傳入函式體 乙個物件以值傳遞的方式從函式返回 乙個物件需要通過另外乙個物件進行初始化。補充說...

C 拷貝構造

呼叫時機 使用乙個已經建立完的物件來初始化乙個新物件 class person person person const person p private string name intage int main person 構造 person 拷貝構造 person 析構 person 析構 值傳遞...

C 基礎筆記(三) 拷貝建構函式

1.拷貝建構函式 拷貝建構函式是一種特殊的建構函式,其形參為本類的物件引用 拷貝建構函式是用乙個物件去構造另乙個物件,或者說,用另乙個物件值初始化乙個新構造的物件。class 類名 拷貝建構函式的實現 類名 類名 類名 物件名 class cpoint cpoint cpoint cpoint pt...