21xrx.com
2025-04-03 23:09:45 Thursday
文章检索 我的文章 写文章
C++中的成员函数指针
2023-07-03 11:25:27 深夜i     17     0
C++ 成员函数指针 指针 函数

C++中的成员函数指针是指向类成员函数的指针,在C++中使用成员函数指针可以实现动态绑定和回调函数。通过成员函数指针,可以将函数作为参数传递给另一个函数,在调用后执行相应的功能。本文将介绍C++中成员函数指针的使用方法。

1. 成员函数指针的定义

C++中的成员函数指针定义格式如下:

`返回值类型 (类名::*成员函数名)(参数列表);`

其中,类名为指向类的指针,成员函数名为指向类的成员函数的指针,参数列表为函数的传入参数。例如:

class MyClass {
public:
 int add(int a, int b);
};
int (MyClass::*ptr)(int, int) = &MyClass::add;

ptr即为成员函数指针,指向MyClass类的add()成员函数。

2. 成员函数指针的使用

成员函数指针可以通过两种方式来调用成员函数:通过对象或者通过指针。下面分别介绍这两种调用方式。

2.1 通过对象调用成员函数指针

MyClass obj;
int result = (obj.*ptr)(1, 2);

上述代码中,obj为对象,ptr为成员函数指针,将ptr指向的函数作为一个成员函数来调用obj中的对象。

2.2 通过指针调用成员函数指针

MyClass* p = &obj;
int result = (p->*ptr)(1, 2);

上述代码中,p为一个指向MyClass类对象的指针,ptr为成员函数指针,将ptr指向的函数作为一个成员函数来调用p指向的对象。

3. 示例程序

#include <iostream>
using namespace std;
class MyClass {
public:
 int add(int a, int b) {
  return a + b;
 }
};
int main() {
 MyClass obj;
 int (MyClass::*ptr)(int, int) = &MyClass::add;
 int result = (obj.*ptr)(1, 2);
 cout << "result is " << result << endl;
 MyClass* p = &obj;
 result = (p->*ptr)(1, 2);
 cout << "result is " << result << endl;
 return 0;
}

输出结果:

result is 3
result is 3

本文介绍了C++中成员函数指针的定义和使用方法,并通过实例程序进行了演示。成员函数指针是C++中非常重要的一个概念,掌握它的使用方法对于理解C++类的动态绑定及回调函数有着重要的帮助。

  
  

评论区

请求出错了