首页 > 后端开发 > C++ > 正文

c++中怎么获取一个类的成员函数指针_c++成员函数指针定义与调用

裘德小鎮的故事
发布: 2025-10-10 09:02:01
原创
909人浏览过
成员函数指针需绑定对象调用,定义为返回类型(类名::指针名)(参数),通过obj.ptr(args)或ptr_obj->*ptr(args)调用,静态成员函数可用普通函数指针直接调用。

c++中怎么获取一个类的成员函数指针_c++成员函数指针定义与调用

在C++中,成员函数指针是一种特殊的指针类型,它指向类的成员函数。由于成员函数调用依赖于对象实例(即this指针),因此不能像普通函数指针那样直接使用。下面介绍如何定义、获取和调用类的成员函数指针。

成员函数指针的定义语法

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

返回类型 (类名::*指针名)(参数列表)

例如,有一个类MyClass

class MyClass {
public:
    void func(int x) {
        cout << "func called with " << x << endl;
    }
};

// 定义一个指向MyClass成员函数的指针
void (MyClass::*ptr)(int) = &MyClass::func;

获取成员函数指针

使用取地址符&加上类名和作用域操作符来获取成员函数的地址:

立即学习C++免费学习笔记(深入)”;

void (MyClass::*ptr)(int) = &MyClass::func;

注意:必须使用&ClassName::function的形式,不能省略类名。

调用成员函数指针

调用成员函数指针时,需要通过一个类的实例或指针进行。有两种方式:

  • 通过对象实例调用:(obj.*ptr)(args)
  • 通过对象指针调用:(ptr_obj->*ptr)(args)

示例:

MyClass obj;
(obj.*ptr)(10); // 输出: func called with 10

MyClass* pObj = &obj;
(pObj->*ptr)(20); // 输出: func called with 20

静态成员函数的特殊情况

静态成员函数不依赖this指针,其调用方式与普通函数相同,可以直接使用普通函数指针:

class MyClass {
public:
    static void staticFunc(int x) {
        cout << "static func: " << x << endl;
    }
};

// 可以用普通函数指针
void (*fp)(int) = &MyClass::staticFunc;
fp(5); // 直接调用

基本上就这些。成员函数指针虽然语法略显复杂,但在某些场景如回调机制、状态机设计中非常有用。关键是记住调用时必须绑定到具体对象,并使用.*->*操作符。

以上就是c++++中怎么获取一个类的成员函数指针_c++成员函数指针定义与调用的详细内容,更多请关注php中文网其它相关文章!

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号