温馨提示×

c++成员函数指针怎么定义和使用

c++
小亿
91
2023-07-13 10:16:57
栏目: 编程语言

在C++中,成员函数指针用于指向类的成员函数。定义和使用成员函数指针的步骤如下:

  1. 定义成员函数指针类型:成员函数指针类型的定义格式为:返回类型 (类名::*指针变量名)(参数列表)。其中,返回类型是成员函数的返回类型,类名是包含成员函数的类名,指针变量名是成员函数指针的名称,参数列表是成员函数的参数列表。

  2. 初始化成员函数指针:成员函数指针可以通过成员函数的地址进行初始化,使用&类名::成员函数名的方式获取成员函数的地址,并将其赋值给成员函数指针。

  3. 调用成员函数指针:成员函数指针可以通过以下两种方式进行调用:

  • 使用指针变量和对象实例调用:使用指针变量和对象实例使用->*运算符来调用成员函数指针,语法格式为对象实例->*指针变量名

  • 使用指针变量和对象指针调用:使用指针变量和对象指针使用.*运算符来调用成员函数指针,语法格式为对象指针.*指针变量名

以下是一个示例代码,演示了如何定义和使用成员函数指针:

#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

注意:成员函数指针只能指向非静态成员函数,不能指向静态成员函数。

0