[问题] class 执行顺序问题

楼主: hina0101giku (hinamatsuri)   2018-05-22 20:08:05
#include <iostream>
using namespace std;
class Base
{
public:
Base(int i) : m_j(i), m_i(m_j) {}
Base() : m_j(0), m_i(m_j) {}
int get_i() const
{
return m_i;
}
int get_j() const
{
return m_j;
}
private:
int m_i;
int m_j;
};
int main()
{
Base obj(98);
cout << obj.get_i() << endl << obj.get_j() << endl;
return 0;
}
程式初学者,想请问
1.int m_i;
int m_j;
这个2个变量定义在下面,可是上面函式却先使用了,为什么不会发生错误呢?
2.Base() : m_j(0), m_i(m_j) {} 执行这一行的时候不会让m_j变为0吗?
作者: bluesoul (忙死你老爸)   2018-05-22 20:31:00
你呼叫的是Base(int)
作者: skyrimrvks   2018-05-23 11:57:00
初始化列表的顺序要跟data member宣告顺序一致

Links booklink

Contact Us: admin [ a t ] ucptt.com