Re: [問題] Class初始化的順序?!
※ 引述《vitolee (毅)》之銘言:
: 我碰到一個有趣的問題,想請問大家是否有碰過。
: 其實我不太明白為啥會有這問題,想請問大家看看
: Code 如下:
: class base{
: private:
: 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;};
: };
: int main(int argc, char *argv[]){
: base obj(98);
: obj.get_i();
: obj.get_j();
: return 0;
: }
: 今天我把private中的 int m_i 跟 int m_j 順序對調
: 哪印出來的結果是不同的?
: 查了一下~應該是初始化的順序問題,
: 但還是不太明白,想請問大家看看~是否有碰過這問題呢!
: 謝謝!
所以說,今天我呼叫 obj(98)
會base(int i)執行下
m_i=m_j中造成 m_j尚未初始化?
之後執行m_j=i 產生 m_i為亂數,但是m_j的值為98.
今天若把 int m_j先宣告,在宣告int m_i
產生 m_j 與 m_i 的值皆為98呢?
因為看來還是會先執行 m_i=m_j 在執行 m_j = i
不太明白程式怎麼跑的說 XD"
還是說我的觀念有點錯誤?
感謝大家的回應說!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.60.223.174
推
06/21 13:37, , 1F
06/21 13:37, 1F
→
06/21 13:37, , 2F
06/21 13:37, 2F
→
06/21 13:38, , 3F
06/21 13:38, 3F
→
06/21 13:38, , 4F
06/21 13:38, 4F
→
06/21 13:39, , 5F
06/21 13:39, 5F
→
06/21 13:39, , 6F
06/21 13:39, 6F
→
06/21 13:40, , 7F
06/21 13:40, 7F
→
06/21 14:40, , 8F
06/21 14:40, 8F
推
06/21 14:42, , 9F
06/21 14:42, 9F
→
06/21 14:42, , 10F
06/21 14:42, 10F
→
06/21 14:43, , 11F
06/21 14:43, 11F
→
06/21 14:43, , 12F
06/21 14:43, 12F
→
06/21 14:43, , 13F
06/21 14:43, 13F
→
06/21 14:44, , 14F
06/21 14:44, 14F
→
06/21 14:45, , 15F
06/21 14:45, 15F
→
06/21 14:45, , 16F
06/21 14:45, 16F
→
06/21 14:46, , 17F
06/21 14:46, 17F
→
06/21 14:46, , 18F
06/21 14:46, 18F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):