书中第43页中有如下描述:
如果有多个class member objects 都要求constructor 初始化操作,将如何?C++语言要求以 “memeber objects 在class中的声明顺序”来调用各个constructors。
也就是说 一个类中的 数据成员 的声明顺序决定了,他们的构造顺序。具体代码如下:
class A1 { public: A1(){cout<<"A1 construction"<<endl;} }; class A2 { public: A2(){cout<<"A2 construction"<<endl;} }; class A4 { public: A4():a2(),a1(){//注意这里的顺序是反过来的 cout<<"A4 construction"<<endl; } private: A1 a1; public: A2 a2; }; int main(int argc, char* argv[]) { A4 a; return 0; }
输出结果:
A1 construction
A2 construction
A4 construction