具体代码如下:
[复制到剪贴板] |
#include <iostream>
class Bar
{
public:
int fun(int a, int b) {
return a * 2 + b * b;
}
};
int main(void)
{
using namespace std;
Bar b;
Bar *pb = new Bar;
// 声明一个指针 ptr,指向的类型是 Bar 的一个成员函数,
// 该函数签名为 int (*ptr)(int, int);
int (Bar::*ptr)(int, int);
ptr = &Bar::fun; // 将 Bar::fun 这个成员函数指针赋给 ptr
// .* 操作符 (关键操作)
cout << (b.*ptr)(3, 4); // 在对象 b 上使用该指针调用其对象的成员函数
// ->* 操作符
cout << (pb->*ptr)(1, 2); // 在对象指针 pb 上使用该指针调用其对象的成员函数
}