c++派生类拷贝构造函数的问题?

不明白的地方是Dd2=d1所实行的结果,B构造D拷贝构造为什么是这样,求解,... 不明白的地方是D d2=d1所实行的结果,
B构造
D拷贝构造
为什么是这样,求解,
展开
 我来答
porker2008
2014-06-14 · TA获得超过1.4万个赞
知道大有可为答主
回答量:7066
采纳率:62%
帮助的人:1.1亿
展开全部
D d2 = d1;

在构造d2的时候用的是D的拷贝构造函数,基类B使用的是无参数的构造函数


我猜你的疑惑是为什么B不是拷贝构造函数,那是因为D的拷贝构造函数里面调用的就是基类的默认构造函数,如果基类B也想调用拷贝构造函数,则D的拷贝构造函数应该写为

D(D& n) : B(n) { cout << "D拷贝构造" << endl; }
追问
还是有些疑惑的
一、调用D的拷贝构造函数为什么会调用B的构造函数
二、
D(D& n) : B(n) { cout << "D拷贝构造" << endl; }
这种形式实现的结果是如下吗
B构造
B拷贝构造
D拷贝构造
追答

因为B是D的基类,所以任何一个D的构造,都必须至少要求一个B的构造

所以D的构造必定会(而且会先)调用B的构造


实现的结果是

B拷贝构造
D拷贝构造
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式