#include <iostream>
#include <string>
using namespace std;
class base
{
private:
//调换下面两个声明则会输出预想的98,98.否则输出结果第一个为随机数,第二个
//为98
int m_i;
int m_j;
public:
base(int i) : m_j(i), m_i(m_j) {}
base() : m_j(0), m_i(m_j) {}
int get_i() {return m_i;}
int get_j() {return m_j;}
};
void main()
{
base obj(98);
cout << obj.get_i() << endl
<< obj.get_j() << endl;
system("pause");
}
[b]分析[/b]:初始化列表的初始化顺序是根据成员变量的声明顺序来执行的,所以m_i会被赋值为一个随机数。更改一下成员变量的申明顺序可以得到预想的结果。