C++类的构造函数列表成员初始化的顺序:成员的初始化顺序与各个成员在类的定义中出现的顺序一致,而与构造函数初始值列表中的前后位置关系无关。如下例所示。
例1:
class A
{
public:
A(int val):j(val),i(j){}
private:
int i;
int j;
}
例1中,从构造函数的形式上看,仿佛是j先被val初始化,i再被j初始化,而这种理解是错误的。实际上的顺序是是i先被j 初始化,j再被val初始化。
C++类的构造函数列表成员初始化的顺序:成员的初始化顺序与各个成员在类的定义中出现的顺序一致,而与构造函数初始值列表中的前后位置关系无关。如下例所示。
例1:
class A
{
public:
A(int val):j(val),i(j){}
private:
int i;
int j;
}
例1中,从构造函数的形式上看,仿佛是j先被val初始化,i再被j初始化,而这种理解是错误的。实际上的顺序是是i先被j 初始化,j再被val初始化。