求助关于虚基类的问题

星点点 2014-04-04 07:32:20
#include<iostream>
#include<cstdio>
using namespace std;
class Base
{
public:
int base;
Base(int a=0)
{
this->base=a;
cout<<"Base Constructer"<<a<<endl;
}
};
class A:public virtual Base
{
public:
int a;
A(int a,int b):a(a),Base(b)
{
cout<<"A Constructer"<<endl;
}
};
class B:public virtual Base
{
public:
int b;
B(int a,int b):b(a),Base(b)
{
cout<<"B Constructer"<<endl;
}
};
class C:public B,public A,public virtual Base
{
public:
int c;
C(int a , int b,int c,int d,int e):A(a,b),B(c,d),Base(e)
{
cout<<"C Constructer"<<endl;
}
};
int main()
{
C c(1,2,3,4,5);
return 0;
}

运行结果是
Base Constructer 5
B Constructer
A Constructer
C Constructer

知道先调用虚基类,但不太明白为什么是先调用B类再A再C?对这个调用顺寻不太明白,求解答,谢谢!
...全文
107 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
微型蚂蚁 2014-04-04
  • 打赏
  • 举报
回复
生命写成了class C:public B,public A,public virtual Base 所以是:Base->B->A->C, 总是按照声明的顺序处理的不管你构造函数里的顺序,
buyong 2014-04-04
  • 打赏
  • 举报
回复
class C:public B,public A,

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧