程序员面试宝典p119中说到:初始化列表的初始化顺序是根据变量的声明顺序来执行的
如下代码:#include using namespace std; class base { private: int m_j; int m_i; 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; } }; int main() { base obj(98); cout << obj.get_i() << " " << obj.get_j() << endl; return 0; }
根据这个原则,输出结果第一个为随机数,第二个结果为98.
但从执行结果来看是:98 98