[問題] 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