> でしたので、MSDNの記述内容は正しい(規格)のようです。
おそらく新しめなコンパイラだと従っていることでしょう。
しかしながら、「カンマ演算子だぁ」と構文解析するコンパイラがいると
悲しい結果になります(^^;
ひととおり身の回りにあるC++本を見てみましたが、お茶を濁していました。
初期化子の動作を箇条書きに挙げている本もありましたが、こちらには
複数の初期化子に関する記述は見られませんでした。
> しょうから、気にしなくてもいいと言えばそうですけど、メンバーの宣言順
> に注意する必要がある場合がある事は確かなようです。ハイ。
==========================================
class CTestclass
{
public:
CTestclass();
int a; // ここ注目
int b; // ここ注目
};
CTestclass::CTestclass() : a(5),b(a+1)
{
TRACE ("%d,%d\n",a,b);
}
------------------------------------------
class CTestclass
{
public:
CTestclass();
int b; // ここ注目
int a; // ここ注目
};
CTestclass::CTestclass() : a(5),b(a+1)
{
TRACE ("%d,%d\n",a,b);
}
==========================================
この2つの結果が違うというのは、一見するとコンパイラのバグに
しか見えないのよね・・・あな恐ろしや。
VFC-LINK P...@nifty.ne.jp
おそらく新しめなコンパイラだと従っていることでしょう。
しかしながら、「カンマ演算子だぁ」と構文解析するコンパイラがいると
悲しい結果になります(^^;
ひととおり身の回りにあるC++本を見てみましたが、お茶を濁していました。
初期化子の動作を箇条書きに挙げている本もありましたが、こちらには
複数の初期化子に関する記述は見られませんでした。
> しょうから、気にしなくてもいいと言えばそうですけど、メンバーの宣言順
> に注意する必要がある場合がある事は確かなようです。ハイ。
==========================================
class CTestclass
{
public:
CTestclass();
int a; // ここ注目
int b; // ここ注目
};
CTestclass::CTestclass() : a(5),b(a+1)
{
TRACE ("%d,%d\n",a,b);
}
------------------------------------------
class CTestclass
{
public:
CTestclass();
int b; // ここ注目
int a; // ここ注目
};
CTestclass::CTestclass() : a(5),b(a+1)
{
TRACE ("%d,%d\n",a,b);
}
==========================================
この2つの結果が違うというのは、一見するとコンパイラのバグに
しか見えないのよね・・・あな恐ろしや。
VFC-LINK P...@nifty.ne.jp