C++中一个类的成员变量初始化有两种初始化方法,一种是采用初始化列表形式,一种是采用构造函数是初始化,对于后者没什么顺序而言,但是对于前者就有顺序问题了。基本思想是,初始化列表的顺序与成员变量的定义顺序一致。如下测试代码:
其结果为一个随机数和98,并不是两个98。
因为先定义了m_i,再定义了m_j,所以进行初始化列表时先初始化m_i(m_j),由于此时m_j值不清楚,因些为随机数,然后进行m_j(98),因此m_j为98。
如果代码换成如下样子,则结果为2个98:
![](https://i-blog.csdnimg.cn/blog_migrate/927b4475d0a9f921cf4028259e08e0fb.jpeg)
其结果为一个随机数和98,并不是两个98。
因为先定义了m_i,再定义了m_j,所以进行初始化列表时先初始化m_i(m_j),由于此时m_j值不清楚,因些为随机数,然后进行m_j(98),因此m_j为98。
如果代码换成如下样子,则结果为2个98:
![](https://i-blog.csdnimg.cn/blog_migrate/29e812c35e26cd602927b97fe71d8990.jpeg)