21xrx.com
2024-06-03 06:08:42 Monday
登录
文章检索 我的文章 写文章
C++中的成员函数指针
2023-07-03 11:25:27 深夜i     --     --
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++类的动态绑定及回调函数有着重要的帮助。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复