c++对象赋值问题 5

同类的2个对象赋值时,如果里面的数据成员有动态分配的数据,会有什么后果?请详细说明原因... 同类的2个对象赋值时,如果里面的数据成员有动态分配的数据,会有什么后果? 请详细说明原因 展开
 我来答
dukuntai
2011-02-03 · TA获得超过263个赞
知道小有建树答主
回答量:97
采纳率:0%
帮助的人:105万
展开全部
比如拿一个创建链表举例。
里面有函数
MakeList();//创建链表 用动态方法
ShowList();//输出链表
DestroyList();//销毁链表
用这个类创建对象a,b。

a.MakeList();
b=a;
a.DestroyList();
b.ShowList(); // 程序到这里会出错。

类b被类a赋值后,如果你没有重载操作符“=”,就没有把动态分配的数据拷贝过去,这叫浅拷贝。
类b想要访问动态数据时,是跑到类a创建的数据里面访问了。
类b想要访问动态数据时,严重依赖类a。
也就是,当动态数据被类a销毁后,b将无法调用那些动态分配的数据。
如果b不调用那些动态分配的数据,什么事都没有。

想解决这个问题,两个建议。
1.建立专门拷贝的函数
2.重载操作符"="。
这样,即使类a把动态数据删除了,类b也可以继续进行动态数据的访问。类a无论干什么,类b什么事都没有了。
sc黑色茉莉
2011-02-03 · TA获得超过274个赞
知道小有建树答主
回答量:344
采纳率:0%
帮助的人:273万
展开全部
如果对象里有指针成员,那原始复制函数复制的就是指针值,共同指向一个数据.所以应该重新定义,深度复制.

参考资料:

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式