私はコードを持っています。なぜこのコードはコンパイルされますか?
class A
{
public:
int foo(int i)
{
return i;
}
};
int foo(int i)
{
return i;
}
int (A::*ptrFoo)(int) = NULL;
int (*_foo)(int) = NULL;
int main()
{
ptrFoo = &A::foo;
_foo = foo;
(*_foo)++++++++++++++(10); //This dont compile...
A a;
(a.*ptrFoo)+++++++++++++++++(10); //This compiles ????
}
教えてください。未定義の振る舞い、または何?私はVS2008でそれをコンパイルしました。間違いなくコードの最後の行が正常にコンパイルされます。
'++++++++++++++++ 'はポストインクリメント演算子が7つあります。おそらく、コンパイラは半分に追いついています。 –
あなたはCとC++の両方としてコンパイルしましたか?または、なぜ両方のタグを組み込んだのですか? –
私はそれをC++(VS2008)でコンパイルしました.iは "C"タグを削除します – YAHOOOOO