类成员是按照它们在类里被声明的顺序进行初始化的,和它们在成员初始化列表中列出的顺序没一点关系。
class CFoo
{
public:
CFoo();
private:
const int ONE, TWO, THREE;
};
// 初始化列表顺序有误!
CFoo::CFoo()
: THREE(3)
, TWO(THREE - 1)
, ONE(TWO - 1)
{
printf("%d %d %d/n", ONE, TWO, THREE);
}
int main()
{
CFoo foo;
return 0;
}