讲述下C++下深拷贝和浅拷贝

某些情况下我们需要将一个对象赋给另一个对象,其中就有一些值得注意的点。

浅拷贝:

 在没有进行运算符的重载时,一般情况下我们定义一个A a(1,2,3);A b;这两个对象,我们会有 b = a; 这就是对象之间的拷贝,也就是会出现深拷贝和浅拷贝,以及一些错误。首先,b = a是一个浅拷贝过程就是将一些数值进行赋值操作。这就出现一个问题,如果类中含有指针,浅拷贝就会出现问题当a对象析构时,则其指针所指向的空间也就释放,此时b对象中的数据中的指针指向了已经释放了的空间,这样的指针是不合法的,会对其他程序的数据产生破坏。为了防止这类事情的发生,我们就采用运算符重载,来实现对象之间的深拷贝。。理解了这一点,我们就知道,需要同时为a,b两个对象分配同样大小的内存空间,将所需要的数据全部拷贝到自己的空间。对象的数据中的指针指向自己数据空间肯定是合法的。

至于运算符的重载,这个很好理解,就不一一解释了。。。。所想的就是这些,,睡觉了。大家晚安。~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值