江湖救急 C加加继承与派生

洁洁好累 2020-11-28 06:15:54
1 写出下列程序的运行结果,并画出类之间的继承关系,以图片方式上传。 #include<iostream > using namespace std; class BASEA { public: BASEA() { cout << "This is BASEA class!\n"; } }; class BASEB { public: BASEB() { cout << "This is BASEB class!\n"; } }; class DERIVEA : public BASEB, virtual public BASEA { public: DERIVEA() { cout << "This is DERIVEA class!\n"; } }; class DERIVEB : public BASEB, virtual public BASEA { public: DERIVEB() { cout << "This is DERIVEB class!\n"; } }; class TOPDERIV : public DERIVEA, virtual public DERIVEB { public: TOPDERIV() { cout << "This is TOPDERIV class!\n"; } }; int main() { TOPDERIV topobj; return 0; }
...全文
199 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
真相重于对错 2020-11-29
  • 打赏
  • 举报
回复
因为虚拟继承,他的子孙类只构造它一次,所以必须要先构造BaseA。
洁洁好累 2020-11-28
  • 打赏
  • 举报
回复
想知输出结果为啥是先BASEA 是因为先调用纯虚函数的构造函数吗?

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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