- 592 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 16:25:07 ]
- struct Bar {
Bar(): x(m_x), m_x() { } Foo &x; private: Foo m_x; }; 初期化子の実行順序は、初期化子の順序ではなくて変数宣言の順序だと記憶していますが、 (例のコードではどちらにせよxが先だと思います。)上のようなコードを書くと、xの初期化から 始まって何物でもないm_xを参照してしまうはずなのにVisual C++のコンパイラは警告すら発し ません。 このようなコードは避けるべきということは言うまでもないですが、コンパイラがまったく順序に 関知しないというのはいかがなものでしょうか、と。
|

|