// 일반 멤버 함수포인터를 만들 때에는 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 |

Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다