看板 Programming 關於我們 聯絡資訊
補一個比較有趣的例子好了 class Point { public: Point(); private: int x; int y; }; 猜猜看以下這兩個 constructor 有什麼差別 Point() : x(3), y(x+1) {} Point() : y(3), x(y+1) {} 前者得到的值是 x = 3, y = 4, 後者得到的值是 x 為未知數,y = 3。 原因是初始化順序和 member initialization list 上寫的順序無關, 而是跟 member 宣告順序有關。在這例子中 x 永遠會先初始化。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.82.153
PcGrek:原來如此(筆記ing). 140.124.42.60 12/17 13:37
sunneo: :p220.132.228.138 12/17 16:12
WPC001:避免這樣的寫法吧... 這意義不大 123.195.25.91 12/19 01:35