假设有个类P:
int i=1;
class P
{
public:
P(): d(c), b(i++), a(i++), c(i++)
{
c=i;
}
private:
int a;
int b;
int c;
int &d;
};
可以看到构造函数P对a,b,c,d都进行了初始化。
顺序是怎样的呢?
函数体里的c=i;肯定最后执行。
但d(c), b(i++), a(i++), c(i++)初始顺序并不是按照d,b,a,c。
而是根据声明的顺序,即a,b,c,d。
最终结果:a=1;b=2;c=4;d=4;
(注意d是c的一个引用,c从3变到4,d也就变成4)