关于类的初始化顺序

Posted on 2011-04-17 22:34 CyberC++ 阅读(114) 评论(0)  编辑 收藏 引用 所属分类: C++ Language
总结归纳一下类的初始化顺序,看下面这个例子
 1class E : public A
 2{
 3
 4public:
 5    E() : b(1), c(2)
 6    
 7        printf("E::E() \n");  
 8    }
;
 9    ~E() {};
10
11private:
12    B b;
13    C c;
14    D d;
15}
;

类E的初始化顺序是:
A:A()
B::B(i)
C::C(i)
D::D()
E::E()

另外注意类成员变量的初始化顺序:
 1class Test
 2{
 3public:
 4    Test() :
 5      i(j), j(3)
 6    {
 7        printf("i = %d, j = %d \n", i, j);  
 8
 9    }
;
10    ~Test() {};
11private:
12    int j, i;
13}
;
14


其中 i 和 j 的值都是有意义的,因为初始化的顺序与 定义时的顺序有关,与构造函数的顺序无关,所以 i 和 j 的值都是3.