#include <iostream.h>
class b1
{
public:
b1(int i){cout<<"constructing b1"<<i<<endl;}
};
class b2
{
public:
b2(int j){cout<<"constructing b2"<<j<<endl;}
};
class b3
{
public:
b3(){cout<<"constructing b3*"<<endl;}
};
class c:public b2,public b1,public b3
{
public:
c(int a,int b,int c,int d):b1(a),memberb2(d),memberb1(c),b2(b)
{}
private:
b1 memberb1;
b2 memberb2;
b3 memberb3;
};
void main()
{
c obj(1,2,3,4);
}
输出结果是:
construcing b22
construcing b11
construcing b3*
construcing b13
construcing b24
construcing b3*
在基类中有缺省形式的构造函数,派生类中的构造函数的声明中可以省略,所以输出construcing b3*,但是最后还输出了construcing b3*这个是构造函数的,像memberb2(d),memberb1(c)都有写的,所以它会去调用构造函数,但是b3 memberb3;没有写为什么也会调用????
问一个c++的继承问题
答案:2 悬赏:70 手机版
解决时间 2021-05-12 23:30
- 提问者网友:呐年旧曙光
- 2021-05-12 12:52
最佳答案
- 五星知识达人网友:怙棘
- 2021-05-12 14:10
类创建对象时,除了调用构造函数,还会建立类创建的对象的数据成员,最后一句,是类C创建对象obj时,建立私有数据成员b3 memberb3;时调用b3的默认构造函数,所以,有了最后一句:construcing b3*
全部回答
- 1楼网友:鱼忧
- 2021-05-12 15:49
对象构造时会构造所有的成员变量
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯