Trong C++, con trỏ hàm khi xử lý các hàm thành viên của lớp hoặc struct, được gọi bằng con trỏ đối tượng hoặc gọi this. Chỉ có thể gọi thành viên của lớp đó (hoặc lớp dẫn xuất) bằng con trỏ kiểu đó vì chúng an toàn về kiểu (type safe).
Ví dụ
#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;
}
};
// dùng con trỏ hàm
int res1(int m, int n, AB* obj, int(AB::*fp)(int,int)) {
return (obj->*fp)(m, n);
}
// dùng con trỏ hàm
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;
}
Kết quả
Subtraction is = 3 Division is = 2