#include <iostream>
using namespace std;
class A
{
public:
A(int a):a_(a){ std::cout << "A constructor" << std::endl; }
private:
int a_;
};
class B: virtual public A
{
public:
B(int a, int b):b_(b),A(a){ std::cout << "B constructor" << std::endl;}
private:
int b_;
};
class C: virtual public A
{
public:
C(int a, int c):c_(c),A(a){ std::cout << "C constructor" << std::endl; }
private:
int c_;
};
class D: public B, public C
{
public:
D(int a,int b, int c, int d) //virtual继承必须在D里显式调用A的构造函数
:B(a,b),C(a,c),A(a),d_(d) //非virtual继承这样用时错误的
{ std::cout << "D constructor" << std::endl; }
private:
int d_;
};
int main()
{
D cd(1,2,3,4);
system("pause");
return 0;
}
虚基类构造函数调用
最新推荐文章于 2021-05-27 11:06:33 发布
本文介绍了一个使用C++实现的包含多重继承的示例,其中包括了类A、B、C和D。类B和C从基类A派生,并且使用了虚拟继承。类D同时继承了B和C,并在构造函数中正确地调用了基类A的构造函数。
924

被折叠的 条评论
为什么被折叠?



