浅copy&深copy
在Python中:
参考:十分钟!彻底弄懂Python深拷贝与浅拷贝机制_哔哩哔哩_bilibili
直接赋值:其实就是对象的引用(别名)。
浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。


意义:
深拷贝避免了数据拷贝后造成的数据重复和冲突。
在C++中:
深拷贝:是指拷贝后对象的逻辑状态相同
浅拷贝:是指拷贝后对象的物理状态相同,默认拷贝构造函数属于浅拷贝(区分)。
当系统中有成员指代了系统中的资源时,需要深拷贝。比如类带有指针成员变量,并有动态内存分配,或者打开了外存中的文件或者使用了系统中的网络接口等。如果不进行深拷贝,比如动态内存空间,可能会出现多次被释放的问题(内存已经被释放了,无法再次释放)。是否需要定义拷贝构造函数的原则是,是类是否有成员调用了系统资源,如果定义拷贝构造函数,一定是定义深拷贝,否则没有意义。
————————————————


复制构造函数定义
复制构造函数是一种特殊的构造函数,其形参为本类的对象引用。作用是用一个已存在的对象去初始化同类型的新对象。
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