#include <iostream>
#include "stdio.h"
#include "string"
using namespace std;
class B
{
public:
int b_;
B(int b = 0)
{
b_ = b;
cout << "调用B的构造函数" << endl;
}
};
class C1 :virtual public B
{
public:
int c1_;
C1(int b = 0, int c1 = 0) :B(b)
{
c1_ = c1;
cout << "调用C1的构造函数" << endl;
}
};
class C2 :virtual public B
{
public:
int c2_;
C2(int b = 0, int c2 = 0) :B(b)
{
c2_ = c2;
cout << "调用C2的构造函数" << endl;
}
};
class D :public C1, public C2
{
public:
int d_;
D(int b = 0, int c1 = 0, int c2 = 0, int d = 0) :B(b), C1(b, c1), C2(b, c2)
{
d_ = d;
cout << "调D的构造函数" << endl;
}
void printf()
{
cout << " C1.b_: " << C1::b_ << " C2.b_: " << C2::b_ << " c1_: " << c1_ << " c2_: " << c2_ << " d_: " << d_ << endl;
}
};
class D2 : public C1, public C2
{
public:
int d2_;
D2(int b = 0, int c1 = 0, int c2 = 0, int d2 = 0) :B(b), C1(b, c1), C2(b, c2)
{
d2_ = d2;
cout << "调用D2的构造函数" << endl;
}
void printf()
{
cout << "b_: " << b_ << " c1_: " << c1_ << " c2_: " << c2_ << " d_: " << d2_ << endl;
}
};
int main()
{
D d = D(1, 2, 3, 4);
d.printf();
D2 d2 = D2(3, 4, 5, 6);
d2.printf();
}