[問題] Class初始化的順序?!

看板C_and_CPP作者 (毅)時間14年前 (2010/06/21 11:36), 編輯推噓1(105)
留言6則, 2人參與, 最新討論串1/2 (看更多)
我碰到一個有趣的問題,想請問大家是否有碰過。 其實我不太明白為啥會有這問題,想請問大家看看 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 順序對調 哪印出來的結果是不同的? 查了一下~應該是初始化的順序問題, 但還是不太明白,想請問大家看看~是否有碰過這問題呢! 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.60.223.174

06/21 12:16, , 1F
初始化是根據 int m_i; int m_j; 而非 m_j(i),m_i(m_j)
06/21 12:16, 1F

06/21 12:19, , 2F
找書 C++ Coding Standards, Item 47
06/21 12:19, 2F

06/21 12:19, , 3F
Define and initialize member variables in the same
06/21 12:19, 3F

06/21 12:19, , 4F
order.
06/21 12:19, 4F

06/21 12:20, , 5F
Many compilers (but not all) will issue a warning if
06/21 12:20, 5F

06/21 12:20, , 6F
you break this rule.
06/21 12:20, 6F
文章代碼(AID): #1C7jv8s0 (C_and_CPP)
文章代碼(AID): #1C7jv8s0 (C_and_CPP)