欢迎光临散文网 会员登陆 & 注册

浅copy&深copy

2022-02-17 15:23 作者:达达里A  | 我要投稿

在Python中:

参考:十分钟!彻底弄懂Python深拷贝与浅拷贝机制_哔哩哔哩_bilibili

直接赋值:其实就是对象的引用(别名)。

浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。

深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。

3种情况
3赋值999后不一样

意义:

深拷贝避免了数据拷贝后造成的数据重复和冲突。

在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



浅copy&深copy的评论 (共 条)

分享到微博请遵守国家法律