C++在多继承时构造函数调用的顺序

今天看书时注意到C++在多继承时,基类的构造顺序是按照继承时给定顺序执行的,析构的顺序正好相反!而与它们初始化的顺序没有任何关系,下面随便写了一个Demo程序来验证C++在多继承时基类的构造顺序。



#include <iostream>
#include <cstdlib>

using namespace std;

class a
{
public:
a(){cout<<"a constructor!!"<<endl;}
~a(){cout<<"a deconstructor!!"<<endl;}
};

class b
{
public:
b(){cout<<"b constructor!!"<<endl;}
~b(){cout<<"b deconstructor!!"<<endl;}
};

class c
{
public:
c(){cout<<"c constructor!!"<<endl;}
~c(){cout<<"c deconstructor!!"<<endl;}
};

class d
{
public:
d(){cout<<"d constructor!!"<<endl;}
~d(){cout<<"d deconstructor!!"<<endl;}
};

class e
{
public:
e(){cout<<"e constructor!!"<<endl;}
~e(){cout<<"e deconstructor!!"<<endl;}
};

class f:public e,public b,public c,public d,public a
{
public:
f(){cout<<"f constructor!!"<<endl;}
~f(){cout<<"f deconstructor!!"<<endl;}
};


int main(int argc,char * args[])
{
f testObj;

system("pause");
return EXIT_SUCCESS;
}





类f分别继承自类e,类b,类c,类d和类a,在main函数中定义了一个testObj对象,这个对象的构造顺序是e->b->c->d->a,析构顺序正好相反。


程序运行结果如下图所示
[img]pic.JPG[/img]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值