深拷贝与浅拷贝总结

先总的来看深拷贝与浅拷贝,拷贝就是我们所说的复制,可以通过生活中的一些例子来深入了解,比如我们有一栋房子,深拷贝就是我们按照这个房子的规格重新在另一个地方建造了一座一摸一样的新房子,而浅拷贝就是给这个房子配了一把钥匙,此时有两把钥匙可以进入这个房子,当钥匙多了,可以进入这个房子的人也就多了,而深拷贝建造了一个新房子,当初始的房子销毁掉,那么我们还有拷贝的房子可以使用,风险更小,所以使用深拷贝更安全
深浅拷贝概念:
深拷贝:在内存中开辟一块新地址用来存放复制的对象
浅拷贝:指向被复制的内存地址,如果这块内存数据发生改变那么通过浅拷贝复制出的对象也会同时发生变化

其实深浅拷贝就是指针与内存之间的关系
在我们进行拷贝的时候,如果有指针那么就是对指针进行拷贝。而指针是什么?指针是一个存储内存地址的整形变量,所以拷贝时就会将指针本身进行复制,但是此时会导致一个问题:源与复制体的指针实际是同一个值,因为指向的地址相同,所以这两个指针可以操纵同一块物理内存,当使用完毕进行析构的时候,我们销毁掉源或者复制体的指针成员之后,另一个指针就会变成野指针,这种情况就是浅拷贝
而深拷贝就是申请了一块和源数据一样大的内存空间,把源数据复制一份然后拷贝过去,所以深拷贝就相当于备份文件,这个不同文件之间不会发生干扰,但是深拷贝由于重新开辟空间复制数据,导致开销较大,一般对于堆上的内存才会使用堆拷贝

总结深浅拷贝的区别
深浅拷贝的根本区别在于是否获得了对象的复制体,当A复制给B,此时修改A,如果B发生改变则为浅拷贝,若没有改变则为深拷贝

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值