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

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

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

求助:谁能帮我把下面的中文翻译成英文~~~~~药物控制释放是目前药物学、高分子生物学等多个领域发展  2020-04-09 …

索契冬奥会刚刚结束,(1)科学的饮食可以保证每一个与会者的健康.①运动员能品尝到虾饺等具有岭南特色  2020-04-11 …

DNA复制的半不连续性(关于单链复制的方向)DNA由双链组成,请问在复制过程中,单链上是否可以双向  2020-05-13 …

下列图象中能正确表示其变化过程的是()A.向pH=10的KOH溶液中不断加水稀释B.用一定质量的K  2020-05-16 …

我国经济体制改革的取向应该是( )A.以政府为取向B.以管制为取向C.以社会为取向D.以市场为取向  2020-05-31 …

生物中外向电流与内向电流在窦房结细胞4期自动去极化的净内向电流主要由一种外向电流和两种内向电流所构  2020-06-07 …

有这样一个寓言故事,一天鹅、梭子鱼和虾想共同移动一车物品,于是天鹅向上,梭子鱼向下,虾向后使劲拽,  2020-07-01 …

前轮胎爆裂已出现转向时,驾驶人不要过度矫正,应在控制住方向的情况下,,使车辆缓慢减速。A、采取紧急  2020-07-11 …

噬菌体浸染细菌的正确顺序是()A.注入→吸附→释放→组装→复制B.复制→组装→释放→吸附→注入C.吸  2020-11-05 …

有这样一个寓言故事,一天鹅、梭子鱼和虾想共同移动一车物品,于是天鹅向上,梭子鱼向下,虾向后使劲拽,但  2020-12-15 …