继承-初始化列表问题
- C/C++ code
#include <iostream>using namespace std;class A{private: int a;public: A(int aa=0) { a = aa; cout << "a=" << a << endl; }};class B{private: int b;public: B(int bb=0) { b = bb; cout << "b=" << b << endl; }};class C:public B{private: A a;public: C() { cout << "c default construtor" << endl; } C(int i,int j):a(i),B(j) { cout << "c constructor " << endl; }};int main(){ C c(5,6); return 0;}输出结果是
b=6
a=5
c constructor
不应该是
a=5
b=6
c constructor
吗?
[解决办法]
按变量定义的顺序进行
因为C继承的B,C中其实包含变量b,b的定义在A a之前,初始化时按照b,a这个顺序,而不是按照a(i),B(j)
...