c 建構函式詳解 深拷貝與淺拷貝

2021-06-16 10:10:43 字數 551 閱讀 5758

以上**編譯沒通過,更改之後通過

#include #include using namespace std;

class person

}

person(person & chs)

// 則新建立的物件的m_pname與原物件chs的m_pname不再指向同一位址了

} ~person( )

};int main( )

執行結果:

c:\mingw>g++  03深拷貝與淺拷貝.cpp

03深拷貝與淺拷貝.cpp: 在函式『int main()』中:

03深拷貝與淺拷貝.cpp:59:27: 警告:不建議使用從字串常量到『char*』的轉換 [-wwri

te-strings]

c:\mingw>a.exe

一般建構函式被呼叫 !

複製建構函式被呼叫

析構函式~person( )被呼叫 !

析構函式~person( )被呼叫 !

參考:

C 拷貝建構函式 深拷貝與淺拷貝 詳解

深拷貝和淺拷貝可以簡單理解為 如果乙個類擁有資源,當這個類的物件發生複製過程的時候,資源重新分配,這個過程就是深拷貝,反之,沒有重新分配資源,就是淺拷貝 對於普通型別的物件來說,它們之間的複製是很簡單的,例如 int a 88 int b a 而類物件與普通物件不同,類物件內部結構一般較為複雜,存在...

C 拷貝建構函式 深拷貝與淺拷貝

深拷貝函式主要是解決拷貝函式不能直接拷貝指標所指記憶體的資料的問題 其次,介紹一下什麼是拷貝建構函式以及拷貝建構函式將在何時被呼叫?拷貝建構函式是一種特殊的建構函式,其形參是本類物件的引用,其作用是使用乙個已經存在的物件來初始化 乙個新的同類的物件。何時被呼叫?當用類的物件去初始化另外乙個物件的時候...

C 淺拷貝與深拷貝建構函式

include using namespace std 淺拷貝和深拷貝區別 1.淺拷貝,若類中不存在拷貝建構函式,會提供預設拷貝建構函式 淺拷貝 可以進行物件值賦值 但當資料成員中存在需要在堆區申請空間時,析構時淺拷貝會造成空間雙重釋放問題 2.深拷貝,當資料成員中存在需要在堆區申請空間時,會呼叫深...