Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 멤버 함수에 대한 함수 포인터

<시간/>

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