#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;
}
虚基类构造函数调用
最新推荐文章于 2024-03-23 16:25:20 发布