#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会被赋值为一个随机数。更改一下成员变量的申明顺序可以得到预想的结果。