Appearance
cpp
// Multiple inheritance
#include <iostream>
using namespace std;
class A {
protected:
int value_a;
int num;
public:
A() {}
A(int a, int n) : value_a(a), num(n) { cout << "A constructor" << endl; }
};
class B {
protected:
int value_b;
int num;
public:
B() {}
B(int b, int n) : value_b(b), num(n) { cout << "B constructor" << endl; }
};
// 构造函数的调用顺序和继承顺序有关
class C : public A, public B {
public:
C() {}
// 构造顺序和调用构造函数的顺序无关
C(int a, int n1, int b, int n2) : B(b, n2), A(a, n1) {
cout << "C constructor" << endl;
}
void show() {
cout << "value_a = " << value_a << endl;
cout << "value_b = " << value_b << endl;
// 不能知道哪个父类传递
// cout << "num = " << num << endl;
cout << "A::num = " << A::num << endl;
cout << "B::num = " << B::num << endl;
}
};
int main() {
C c(1, 2, 3, 4);
c.show();
return 0;
}