深拷貝與淺拷貝

2021-09-24 18:02:55 字數 609 閱讀 5195

淺拷貝:簡單的賦值拷貝操作,可能使兩物件在釋放堆區記憶體時,重複釋放,編譯器報錯

深拷貝:在堆區重新建立一塊新記憶體

#include "stdafx.h"

#includeusing namespace std;

//深拷貝與淺拷貝

//淺拷貝:簡單的賦值拷貝操作,可能使兩物件在釋放堆區記憶體時,重複釋放,編譯器報錯

//深拷貝:再堆區重新建立一塊新記憶體

//淺拷貝帶來的問題:記憶體重複釋放,編譯器報錯,用深拷貝解決

class person

person(int age, int height)

//寫個拷貝建構函式,解決淺拷貝記憶體重複呼叫問題

person(const person &p)

~person()

*/cout << "person的析構函式呼叫" << endl;

} int m_age;//年齡

int *m_height;//身高資料建立在堆區;

};void test()

int main()

//總結:若屬性有在堆區開闢的,一定要提供拷貝建構函式,防止淺拷貝帶來的問題

「淺拷貝」與「深拷貝」

c 中物件的複製就如同 轉殖 用乙個已有的物件快速地複製出多個完全相同的物件。一般而言,以下三種情況都會使用到物件的複製 1 建立乙個新物件,並用另乙個同類的已有物件對新物件進行初始化,例如 cpp view plain copy class rect rect rect1 rect rect2 r...

淺拷貝與深拷貝

淺拷貝 1 2 myclass a,b a b 為了封裝性和解耦,同型別的兩個物件之間進行賦值操作時,所有成員變數被複製,包括私有成員 指標變數。類的成員函式在傳遞或返回物件時都會進行物件複製產生臨時物件,比如函式呼叫時實參變為形參,以及函式返回物件。考慮到效能和使用者要求不同,編譯器不複製物件內部...

「淺拷貝」與「深拷貝」

c 中物件的複製就如同 轉殖 用乙個已有的物件快速地複製出多個完全相同的物件。一般而言,以下三種情況都會使用到物件的複製 1 建立乙個新物件,並用另乙個同類的已有物件對新物件進行初始化,例如 cpp view plain copy class rect rect rect1 rect rect2 r...