早教吧作业答案频道 -->其他-->
“如果一个类包含指向另一个对象的指针数据成员,应为该类提供复制构造函数。”那位大虾给解释一下
题目详情
“如果一个类包含指向另一个对象的指针数据成员,应为该类提供复制构造函数。”那位大虾给解释一下
▼优质解答
答案和解析
这就是所谓的深拷贝,C++默认的对象复制方式是按位拷贝(通称浅拷贝),(赋值也是),即将所有的数据元素按照物理的字节排列原样地拷贝被复制(赋值也是)对象里,正常情况下没有问题,因为类的每个数据成员都有自己独自的空间,但是一旦该成员是指针时,问题就出现了,虽然两个指针都有自己的空间,但是因为复制的是指针的值,结果就是这两个指针指向了同一个空间,也就是说,凡是赋值的都共享同一块空间,带来的问题主要有两种:1、访问不可知空间----通过一个指针释放了该空间,另外一个指针还指向该区间,2、某一个修改了,别的也变了(如同全局变量),当然还有内存泄漏的问题,为避免这个问题,该类必须自定义复制构造函数,在这里可以为每个指针重新分配空间,并完成指针指向目标的严格复制,可以避免刚才说的问题1、2,但是3不能避免。实际上,这种场合下不仅需要自定义复制构造函数,还需要重载赋值运算符,并且还要自定义析构函数,其详细语法格式和探讨参见比较深入的C++教材
看了“如果一个类包含指向另一个对象...的网友还看了以下:
已知一个反比例函数的图象经过点A(3,-4).(十)这个函数的图象位于哪些象限?在图象的每一支上, 2020-04-08 …
已知反比例函数的图像经过点A﹣6.﹣31.求这个函数的表达式2.点B(4.9/2)c(2,-5)是 2020-04-08 …
已知,反比例函数图象经过点A(2,6)(1)求这个反比例函数的解析式;(2)这个函数的图象位于哪些 2020-04-08 …
如果一次函数y=kx+b的图象经过第二、三、四象限,则反比例函数y=kbx的图象位于第象限内. 2020-04-08 …
2009•山东)将函数y=sin2x的图象向左平移 π4个单位,再向上平移1个单位,所得图象的函数 2020-05-16 …
对于一次函数y=-2x+4,下列结论错误的是()A.函数值随自变量的增大而减小B.函数的图象不经过 2020-07-25 …
问几道初3水平数学题!1.如果Y与X成反比列,Z与Y成正比列,则Z与X成什么?2.若反比列函数Y=X 2020-10-30 …
(2009•随州)如图是某二次函数的图象,将其向左平移2个单位后的图象的函数解析式为y=ax2+bx 2020-11-12 …
我们学习了利用函数图象求方程的近似解,例如:把方程2x-1=3-x的解看成函数y=2x-1的图象与函 2020-12-08 …
当m取何值是,函数y=(m+2)x(绝对值m减3)是反比例函数?他的函数图象位于第几象限内?在每个象 2020-12-23 …