C 之深拷貝VS淺拷貝

2021-07-30 04:14:43 字數 781 閱讀 3342

1.淺拷貝

將值直接拷貝過去

只是對指標的拷貝,拷貝之後兩個指標指向同一塊記憶體,會造成系統奔潰

class array

;

#include #include "array.h"

using namespace std;

array::array(int count)

array::array(const array &arr)

2.深拷貝

不但對指標實現拷貝,還對指標指向的內容實現拷貝,拷貝之後兩個指標指向不同的記憶體。

類裡有個成員是指標,必須實現深拷貝

class array

;

#include #include "array.h"

using namespace std;

int main()

#include #include "array.h"

using namespace std;

array::array(int count)

cout << "array"<< endl;

}array::array(const array &arr)

cout << "array &"<

深拷貝 vs 淺拷貝

深拷貝和淺拷貝都是針對的引用型別,js中的變數型別分為值型別 基本型別 和引用型別 對值型別進行複製操作會對值進行乙份拷貝,而對引用型別賦值,則會進行位址的拷貝,最終兩個變數指向同乙份資料。基本型別 var a 1 var b a a 2 console.log a,b 2,1 a b指向不同的資料...

C 之深拷貝 淺拷貝

關於拷貝的錯誤 對乙個已知物件進行拷貝,編譯系統會自動呼叫一種建構函式 拷貝建構函式,如果使用者未定義拷貝建構函式,則會呼叫預設拷貝建構函式。以下有乙個學生類 執行結果 呼叫一次建構函式,呼叫兩次析構函式,兩個物件的指標成員所指記憶體相同,這會導致什麼問題呢?name指標被分配一次記憶體,但是程式結...

C 之深拷貝 淺拷貝

什麼是拷貝建構函式?通過拷貝物件的方式建立乙個新的物件,拷貝建構函式的引數必須是類物件的引用,也就是將乙個物件拷貝給另乙個新建的物件 用途,在建立物件的時候,使用同一類之前建立的物件來初始化新建立的物件 book book b 必須是引用的原因是,如果是傳值方式將實參傳遞給形參,中間要經歷乙個物件的...