C deep copy 深度拷貝

2021-10-10 17:44:31 字數 642 閱讀 4905

當類的成員變數存在指標型別時,如果採用賦值語句將乙個該類物件賦給另外乙個物件時,缺省會採用淺拷貝,也即兩個指標型別的成員變數指向同乙個位址,這樣當物件生命週期結束時會呼叫析構函式,釋放相應的記憶體位址。但是由於淺拷貝,會導致釋放發生兩次,如此第二次釋放發生時,因為已經被釋放過一次,所以程式會奔潰。**如下:

#include #include class string

~string()

friend std::ostream& operator<<(std::ostream& stream, const string& string);

};std::ostream& operator<<(std::ostream& stream, const string& string)

void printstring(const string& string)

string(const string& other)

: m_size(other.m_size){

std::cout << "copy string"

深度拷貝和潛拷貝

淺 復 制 在複製操作時,對於被複製的物件的每一層複製都是指標複製。深 復 制 在複製操作時,對於被複製的物件至少有一層複製是物件複製。完全複製 在複製操作時,對於被複製的物件的每一層複製都是物件複製。注 1 在複製操作時,對於物件有n層是物件複製,我們可稱作n級深複製,此處n應大於等於1。2 對於...

深度拷貝和淺度拷貝

文字說明 比如乙個陣列 array 淺度拷貝是當陣列a變數成陣列b的時候,b改變裡面的陣列數值的時候,a也隨著改變,深度拷貝是噹噹陣列a變數成陣列b的時候,b改變裡面的陣列數值的時候,a裡面的陣列陣列不隨著改變,那麼為什麼淺度拷貝會改變a的陣列值而深度拷貝則不會呢?因為淺度拷貝指向的是同乙個記憶體,...

Python列表深度拷貝

python列表深度拷貝可保證拷貝後列表忠誠度始終如一,而淺度列表則有向蒲志高看齊的衝動!如下有公司人員構成,中途變動後情況 import copy list1 劉德華 張學友 郭富城 何炅 汪涵 謝娜 齊達內 黎明 定義list1 list2 copy.copy list1 淺拷list1,打醬油...