“如果一个类包含指向另一个对象的指针数据成员,应为该类提供复制构造函数。”那位大虾给解释一下

 我来答
chiconysun
2011-01-25 · TA获得超过2.2万个赞
知道大有可为答主
回答量:5410
采纳率:92%
帮助的人:2605万
展开全部
这就是所谓的深拷贝,C++默认的对象复制方式是按位拷贝(通称浅拷贝),(赋值也是),即将所有的数据元素按照物理的字节排列原样地拷贝被复制(赋值也是)对象里,正常情况下没有问题,因为类的每个数据成员都有自己独自的空间,但是一旦该成员是指针时,问题就出现了,虽然两个指针都有自己的空间,但是因为复制的是指针的值,结果就是这两个指针指向了同一个空间,也就是说,凡是赋值的都共享同一块空间,带来的问题主要有两种:1、访问不可知空间----通过一个指针释放了该空间,另外一个指针还指向该区间,2、某一个修改了,别的也变了(如同全局变量),当然还有内存泄漏的问题,为避免这个问题,该类必须自定义复制构造函数,在这里可以为每个指针重新分配空间,并完成指针指向目标的严格复制,可以避免刚才说的问题1、2,但是3不能避免。实际上,这种场合下不仅需要自定义复制构造函数,还需要重载赋值运算符,并且还要自定义析构函数,其详细语法格式和探讨参见比较深入的C++教材
lmxilyminna
2011-01-25
知道答主
回答量:17
采纳率:0%
帮助的人:0
展开全部
学的都忘光了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式