複製建構函式 淺複製and深複製(2)

2021-08-08 17:50:12 字數 750 閱讀 2827

// 複製建構函式——淺複製and深複製(2).cpp : 定義控制台應用程式的入口點。

//本部分介紹1.淺複製的問題;2.如何進行深複製

#include "stdafx.h"

#include"conio.h"

#include"iostream"

using namespace std;

class array

}//自定義析構函式

~array()

//成員變數

int len;

int *p;

};//預設複製建構函式(可不寫,系統會自動生成),其作用是將a的資料成員經複製建構函式處理傳遞給新定義物件的成員。

/*array(const array &a) */

//使用複製建構函式

int main()

cout << endl<< "a2" << endl;

for (int i = 0; i < a2.len; i++)

_getch();

return 0;

}//我們只對a1的陣列p進行操作,其結果a1、a2的陣列p都為4,5,6,7

//觀察預設的賦值建構函式我們可以發現p=a.p;實際上為a2.p=a1.p;a1、a2的p都指向同乙個記憶體單元所以才有上面的執行結果

//深複製就是要是a2的p指向另外的記憶體單元。

array::array(const array &a)

//這樣我們就達到了深複製的目的

淺複製 深複製

second,來說說shallow copy and deep copy的定義和我自己的一些理解。僅供參考 淺複製 shallow copy 如果欄位是值型別的。則對該字段執行逐位複製,如果欄位是引用型別,則複製引用但不複製引用的物件 因此,原始物件及其副本引用同一物件。即被複製物件的所有變數都含有...

深複製 淺複製

深複製又叫深拷貝 淺複製又叫淺拷貝 位拷貝。為了理解什麼叫深複製和淺複製,我們舉乙個例子,假如我們有乙個類叫cdemo,有兩個成員,a 和 str.class cdemo 我們再定義乙個建構函式 cdemo int pa,char cstr 然後執行 cdemo a 10,hello cdemo b...

深複製淺複製

淺複製 所謂的淺拷貝就是拷貝指向物件的指標,意思就是說 拷貝出來的目標物件的指標和源物件的指標指向的記憶體空間是同一塊空間.淺拷貝只是一種簡單的拷貝,讓幾個物件公用乙個記憶體,然而當記憶體銷毀的時候,指向這個記憶體空間的所有指標需要重新定義,不然會造成野指標錯誤 深複製所謂的深拷貝指拷貝物件的具體內...