读书人

继承-初始化列表有关问题

发布时间: 2012-02-11 09:51:35 作者: rapoo

继承-初始化列表问题

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)
...

读书人网 >C++

热点推荐