안녕하세요 스페로 입니다.
__closer 에대해 도움말을 보다가 이상한게 있어서 질문 합니다.
아래와 같이 도움말에 있는 것을 약간 변경하여 실행해 보았습니다.
//---------------------------------------------------------------------------
#include <stdio.h>
#include <conio.h>
#pragma hdrstop
//---------------------------------------------------------------------------
class base
{
public:
void func(int x) { printf("%d",x); };
};
typedef void (base::* pBaseMember)(int);
int main(int argc, char* argv[])
{
base baseObject;
pBaseMember m = & base::func; // Get pointer to member 'func'
// Call 'func' through the pointer to member
(baseObject.*m)(17);
getch();
return 0;
}
17을 잘출력 합니다.
일반적인 C 에서 함수 포인터는 위에서 처럼 &연산자를 쓰지 않고 함수이름 자체가 포인터로 간주 합니다.
그래서 아래와 같이 & 연산자를 띠어내고 해보았음니다.
pBaseMember m = base::func; // Get pointer to member 'func'
결과는 에러없이 17을 잘출력합니다.
?? 어찌된 일인지요??
|