1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | #include <iostream> /** * 정적함수포인터, 멤버함수포인터 */ using namespace std; class Point{ int x; int y; public: Point( int _x = 200, int _y = 300 ) : x(_x), y(_y) {} void Print(){ cout<<x<<","<<y<<endl; } void Print(int num){ cout<<num<<":"<<x<<","<<y<<endl; } void Print(int x, int y){ cout<<x<<","<<y<<endl;} }; void Print( int x, int y ){ cout<<x<<","<<y<<endl; } int main(){ //[전역함수, namespace전역함수, static멤버함수] void (*pf)(int, int) = Print; // 정적함수포인터 pf(1000,2000); /** * 클래스 멤버 함수포인터 선언이 다른것은 * 함수호출규약이 틀리기때문인데, 정적함수포인터는 cdecl이고, * 멤버함수는 thiscall규약을 따릅니다. * */ /** * pt객체로 멤버함수포인터를 이용한 호출문 */ Point pt(10,20); void (Point::*pf2)(int) = &Point::Print; (pt.*pf2)(100); void (Point::*pf3)(int, int ) = &Point::Print; (pt.*pf3)(30,40); /** * pt주소값으로 멤버함수포인터를 이용한 호출문 */ Point *pAddress = &pt; void (Point::*pf4)(int) = &Point::Print; (pAddress->*pf4)(40); system("pause"); return 0; } |
'0x0001 > C, C++' 카테고리의 다른 글
[C++] 함수객체 ( Functor ) (0) | 2019.02.08 |
---|---|
[C++] 콜백함수( CallBack Function ) (0) | 2019.02.08 |
[C++] 템플릿 (함수템플릿, 클래스템플릿) (0) | 2019.02.08 |
[C++] 연산자 오버로딩 (0) | 2019.02.08 |
[C++] 가상소멸자 (0) | 2019.02.08 |