在C++中,成员函数指针用于指向类的成员函数。定义和使用成员函数指针的步骤如下:
定义成员函数指针类型:成员函数指针类型的定义格式为:返回类型 (类名::*指针变量名)(参数列表)
。其中,返回类型是成员函数的返回类型,类名是包含成员函数的类名,指针变量名是成员函数指针的名称,参数列表是成员函数的参数列表。
初始化成员函数指针:成员函数指针可以通过成员函数的地址进行初始化,使用&类名::成员函数名
的方式获取成员函数的地址,并将其赋值给成员函数指针。
调用成员函数指针:成员函数指针可以通过以下两种方式进行调用:
使用指针变量和对象实例调用:使用指针变量和对象实例使用->*
运算符来调用成员函数指针,语法格式为对象实例->*指针变量名
。
使用指针变量和对象指针调用:使用指针变量和对象指针使用.*
运算符来调用成员函数指针,语法格式为对象指针.*指针变量名
。
以下是一个示例代码,演示了如何定义和使用成员函数指针:
#include <iostream>
class MyClass {
public:
void func(int x) {
std::cout << "func: " << x << std::endl;
}
};
int main() {
// 定义成员函数指针类型
typedef void (MyClass::*FuncPtr)(int);
// 初始化成员函数指针
FuncPtr ptr = &MyClass::func;
// 创建对象实例
MyClass obj;
// 调用成员函数指针
(obj.*ptr)(10); // 使用对象实例调用
MyClass* pObj = &obj;
(pObj->*ptr)(20); // 使用对象指针调用
return 0;
}
输出结果为:
func: 10
func: 20
注意:成员函数指针只能指向非静态成员函数,不能指向静态成员函数。