2021-08-21

c++拷贝构造和赋值运算符重载

*编译器提供的默认拷贝构造函数和重载的赋值运算符都只会进行浅拷贝,仅仅是将对象中各个数据成员的值拷贝给另一个同一个类对象对应的数据成员。对于没有动态成员的对象来说,这没什么错。但是当有动态成员时,比如有个成员变量int p。如果只是进行浅拷贝,两个对象的成员变量p都指向了同一块内存空间,当一个对象被析构时,内存空间被释放。另一个对象的成员变量p就会指向一块被释放了的内存空间,成为野指针,会发现意外的错误。而且,由于该内存空间被释放。再次调用析构函数时,会出现_BLOCK_TYPE_IS_VALID(pHead->nBlockUse的问题。

所以对于动态成员,我们需要进行深拷贝,重新开辟内存空间。重载拷贝构造函数和赋值运算符。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值