Skip to content
On this page

MultipleInheritance.cpp


标签:代码片段CPP/basic  
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;
}

Last updated: