// 일반 멤버 함수포인터를 만들 때에는 thiscall을 생각해서 'Point::'를 추가해주자!!
// void(Point::*f3)() = &Point::hoo;
class Point
{
public:
//this가인자로전달되지않는멤버함수.
static void foo( int a )
{ cout << "foo()" << endl; }
void hoo()
{ cout << "hoo()" << endl; }
};
void goo( int a )
{
cout << "goo()" << endl;
}
int main()
{
void(*f1)(int) = &goo;
void(*f2)(int) = &Point::foo;
// 일반멤버함수의 주소
void(Point::*f3)() = &Point::hoo;
//f3(); // 될까? 안된다-> 객체가없다. this를전달해주지못한다.
Point p;
(p.*f3)(); // ()로.을 우선으로 연산하고 *를 하여서 함수포인터를 호출!
}
Tag | C++