在《C++中类的构造函数初始值列表》中提到,C++中类的构造函数初始值列表可以对类的成员进行初始化。
1 构造函数的初始化列表只是说明各变量的初始值
但是需要注意的是,构造函数的初始化列表只是说明各变量的初始值,并没有指定变量的初始化顺序。
其中,myClass类构造函数的初始化列表只是说明了变量i的初始值是1,变量j的初始值是i的值。但是并不一定是先初始化i而后初始化j。
class myClass {
public:
int j;
int i;
myClass():i(1), j(i)
{
}
};
2变量初始化的顺序与声明顺序有关
变量的初始化顺序与构造函数的初始化列表无关,而与变量在类中声明的顺序有关。因此,在myClass类的构造函数中,先初始化j,后初始化i。此时,j的初始值未指定,而i的初始值是1。如果将myClass类中变量声明的顺序改变一下,
class myClass {
public:
int i;
int j;
myClass():i(1), j(i)
{
}
};
此时,构造函数先初始化i,后初始化j,i和j的初始值是1。