代码改变世界

Effective C++ 学习笔记(10)

2011-08-03 14:28  Daniel Zheng  阅读(210)  评论(0编辑  收藏  举报

初始化列表中的成员列出的顺序和它们在类中声明的顺序相同


class A
{
public:
A(
int a):j(a),i(j*2)
{
cout
<<"A constructor"<<endl;
}
void Get() const
{
cout
<<"i="<<i<<endl<<"j="<<j<<endl;
}
private:
int i;
int j;
};
int main()
{
A a(
10);
a.Get();
return 0;
}

  执行结果:

i = -1717986920

j = 10

造成这种结果的原因是类的成员是按照它们在类里声明的顺序初始化的,和它们在成员初始化表中的顺序无关。在这里是先初始化i,再初始化j,所以i为未初始化的值。