拷贝构造函数~浅复制深复制~浅复制带来的危害以及解决办法

假设类A中有个数据成员s,并且s是利用new操作从堆中动态获得的存储空间,那么在执行以下操作:

A a;

a.setS(5);

A b;

b=a;

那么a和b中的成员s将会共享同一块存储空间。假设a中的s发生变化,那么b中的s也将会发生变化,更为严重 的是如果a和b中有一个对象销毁,s所占有的分配空间被释放的时候,会对另一个对象产生灾难性的影响。

解决办法:

1.写拷贝构造函数(复制初始化构造函数)。

格式:类名(const 类名&);

在拷贝构造函数中为s分配独立的堆空间。

2.对赋值运算符“=”进行重载。

道理是一样的,都是对s分配属于自己的存储空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值