我有一個代碼。這段代碼爲什麼要編譯?
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.Strangely最後一行代碼編譯成功。
'++++++++++++++'是七個半後增量運算符。據推測,編譯器已經陷入了一半。 – 2012-01-03 05:47:14
您是否將它編譯爲C和C++?或者你爲什麼包含這兩個標籤? – 2012-01-03 05:53:21
我編譯它在c + +(VS2008).i將刪除「C」標記 – YAHOOOOO 2012-01-03 06:01:09