我有一个代码。这段代码为什么要编译?
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