【正确答案】
【答案解析】在C++中,类的成员变量的初始化顺序只与变量在类中的声明顺序有关,与在构造函数中的初始化列表的顺序无关。而且静态成员变量先于实例变量,父类成员变量先于子类成员变量,父类构造函数先于子类构造函数。
程序代码示例如下:
class Test
{
private:
int n1;
int n2;
public:
Test();
};
Test::Test():n2(2),n1(1)
{}
当查看相关汇编代码时,就能看到正确的初始化顺序了。因为成员变量的初始化次序跟变量在内存中的次序有关,而内存中的排列顺序早在编译期就根据变量的定义次序决定了。
从全局看,变量的初始化顺序如下:
1)基类的静态变量或全局变量。
2)派生类的静态变量或全局变量。
3)基类的成员变量。
4)派生类的成员变量。