早教吧 育儿知识 作业答案 考试题库 百科 知识分享

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

题目详情
“如果一个类包含指向另一个对象的指针数据成员,应为该类提供复制构造函数。”那位大虾给解释一下
▼优质解答
答案和解析
这就是所谓的深拷贝,C++默认的对象复制方式是按位拷贝(通称浅拷贝),(赋值也是),即将所有的数据元素按照物理的字节排列原样地拷贝被复制(赋值也是)对象里,正常情况下没有问题,因为类的每个数据成员都有自己独自的空间,但是一旦该成员是指针时,问题就出现了,虽然两个指针都有自己的空间,但是因为复制的是指针的值,结果就是这两个指针指向了同一个空间,也就是说,凡是赋值的都共享同一块空间,带来的问题主要有两种:1、访问不可知空间----通过一个指针释放了该空间,另外一个指针还指向该区间,2、某一个修改了,别的也变了(如同全局变量),当然还有内存泄漏的问题,为避免这个问题,该类必须自定义复制构造函数,在这里可以为每个指针重新分配空间,并完成指针指向目标的严格复制,可以避免刚才说的问题1、2,但是3不能避免。实际上,这种场合下不仅需要自定义复制构造函数,还需要重载赋值运算符,并且还要自定义析构函数,其详细语法格式和探讨参见比较深入的C++教材
看了“如果一个类包含指向另一个对象...的网友还看了以下:

英语翻译OK手势美国人把食指和拇指连在一起,形成一个圆圈,表示赞成,这种手势的意思是某事不错或很好  2020-05-16 …

下列供应商绩效评审指标中,属于供应指标的有( )。A.供货免检率 B.价格水平 C.交货周期 D.供  2020-05-19 …

如何利用利用dir/a-d/b/s从指定目录搜索并拷贝经高手指点完成了如下代码,想从指定的txt中  2020-05-23 …

回答下列与微生物培养有关的问题.某细菌固体培养基的组成成分如表.该培养基能提供无机盐的是(填编号)  2020-06-25 …

水和无机盐平衡问题甲乙两种生活在不同环境的哺乳动物,分别强迫灌饮海水1000L后分析其尿液和其成分  2020-06-27 …

豆腐是生活中常见的食品,主要成分如图所示.(1)除豆腐外,很多食物也能提供丰富的蛋白质.下列能提供  2020-07-06 …

什么是最小凸集(如何确定,如何画图)如今使用天然气的人越来越多,作为天然气的供应商如何向用户供气,  2020-07-10 …

纪念鲁迅先生的挽联中说道“译著尚未成书”是指他生前有未完成的译著还是指译著尚未编辑成册如果是指他生前  2020-11-27 …

英语翻译有些句子我会翻译,如用错误请指正1:xx1和xx2有现货供应吗?如果没有那什么时候能供应?I  2020-11-28 …

如图甲所示,是小明常用的一个插线板.他在使用中发现:插线板上的指示灯(发光二极管)在开关闭合时会发光  2020-12-03 …