您的位置:首页 > 其它

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

2018-04-11 21:54 176 查看
假设类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分配属于自己的存储空间。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: