코드가 있습니다.이 코드가 컴파일되는 이유는 무엇입니까?
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)에서 컴파일했다. "C"태그를 제거 할 것이다. – YAHOOOOO