C++에서 클래스 또는 구조체의 멤버 함수를 처리할 때 함수 포인터는 개체 포인터 또는 this 호출을 사용하여 호출됩니다. 유형 안전하므로 해당 유형의 포인터를 사용하여 해당 클래스(또는 파생 상품)의 멤버만 호출할 수 있습니다.
예시
#include <iostream> using namespace std; class AB { public: int sub(int a, int b) { return a-b; } int div(int a, int b) { return a/b; } }; //using function pointer int res1(int m, int n, AB* obj, int(AB::*fp)(int,int)) { return (obj->*fp)(m,n); } //using function pointer int res2(int m, int n, AB* obj, int(AB::*fp2)(int,int)) { return (obj->*fp2)(m,n); } int main() { AB ob; cout << "Subtraction is = " << res1(8,5, &ob, &AB::sub) << endl; cout << "Division is = " << res2(4,2, &ob, &AB::div) << endl; return 0; }
출력
Subtraction is = 3 Division is = 2