淺copy&深copy
在Python中:
參考:十分鐘!徹底弄懂Python深拷貝與淺拷貝機制_嗶哩嗶哩_bilibili
直接賦值:其實就是對象的引用(別名)。
淺拷貝(copy):拷貝父對象,不會拷貝對象的內部的子對象。
深拷貝(deepcopy): copy 模塊的 deepcopy 方法,完全拷貝了父對象及其子對象。


意義:
深拷貝避免了數據拷貝后造成的數據重復和沖突。
在C++中:
深拷貝:是指拷貝后對象的邏輯狀態(tài)相同
淺拷貝:是指拷貝后對象的物理狀態(tài)相同,默認拷貝構造函數屬于淺拷貝(區(qū)分)。
當系統(tǒng)中有成員指代了系統(tǒng)中的資源時,需要深拷貝。比如類帶有指針成員變量,并有動態(tài)內存分配,或者打開了外存中的文件或者使用了系統(tǒng)中的網絡接口等。如果不進行深拷貝,比如動態(tài)內存空間,可能會出現多次被釋放的問題(內存已經被釋放了,無法再次釋放)。是否需要定義拷貝構造函數的原則是,是類是否有成員調用了系統(tǒng)資源,如果定義拷貝構造函數,一定是定義深拷貝,否則沒有意義。
————————————————


復制構造函數定義
復制構造函數是一種特殊的構造函數,其形參為本類的對象引用。作用是用一個已存在的對象去初始化同類型的新對象。
class類名?{
public :
???類名(形參);//構造函數
???類名(const?類名?&對象名);//復制構造函數
??? //??????...
};
類名::類(const??類名&對象名)//復制構造函數的實現
{???函數體???}
例如:
Line::Line(const Line &obj)
{ ? ?cout << "調用拷貝構造函數并為指針 ptr 分配內存" << endl; ? ?
????ptr = new int; ? ?
????*ptr = *obj.ptr; // 拷貝值
}
參考鏈接:https://blog.csdn.net/weixin_55305220/article/details/118163216
拷貝構造函數:https://www.runoob.com/cplusplus/cpp-copy-constructor.html