C++获取类的成员函数的函数指针详解及实例代码

发布时间 - 2026-01-10 23:14:52    点击率:

C++获取类的成员函数的函数指针详解

用一个实际代码来说明。

class A
{
public:
  staticvoid staticmember(){cout<<"static"<<endl;}  //static member
  void nonstatic(){cout<<"nonstatic"<<endl;}     //nonstatic member
  virtualvoid virtualmember(){cout<<"virtual"<<endl;};//virtual member
};
int main()
{
  A a;
  //static成员函数,取得的是该函数在内存中的实际地址,而且因为static成员是全局的,所以不能用A::限定符
  void(*ptrstatic)()=&A::staticmember;   
  //nonstatic成员函数 取得的是该函数在内存中的实际地址  
  void(A::*ptrnonstatic)()=&A::nonstatic;
  //虚函数取得的是虚函数表中的偏移值,这样可以保证能过指针调用时同样的多态效果
  void(A::*ptrvirtual)()=&A::virtualmember;
  //函数指针的使用方式
  ptrstatic();
  (a.*ptrnonstatic)();
  (a.*ptrvirtual)();
}

可以参考《C++ Primer(3rd)》第532页13.6指向类成员的指针一节~

 1.一个指向外部函数的指针声明为:

void(*pf)(char*,constchar*);
void strcpy(char* dest,constchar* source);
pf=strcpy;

2.一个指向类A成员函数的指针声明为:

void(A::*pmf)(char*,constchar*);

声明的解释是:pmf是一个指向A成员函数的指针,返回无类型值,函数带有二个参数,参数的类型分别是char * 和 const char *。除了在星号前增加A:: ,与声明外部函数指针的方法一样。

3.给成员指针赋值的方法是将函数名通过指针符号&赋予指针名。

如下所示:

class A
{
  public:
   void strcpy(char*,constchar*);
   void strcat(char*,constchar*);
};
pmf =&A::strcpy;

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# C++获取类的成员函数的函数指针  # C++成员函数的函数指针详解及实例  # C++子类父类成员函数的覆盖和隐藏实例详解  # 实例解析C++中类的成员函数指针  # C++中与输入相关的istream类成员函数简介  # 详解C++编程中类的成员变量和成员函数的相关知识  # C++类静态成员与类静态成员函数详解  # c++中string类成员函数c_str()的用法  # C++中Operator类型强制转换成员函数解析  # C++指向类成员函数的指针详细解析  # C++类中的六大默认成员函数详解  # 的是  # 是一个  # 希望能  # 所示  # 不能用  # 谢谢大家  # 二个  # 多态  # virtualvoid  # virtualmember  # void  # nonstatic  # virtual  # main  # strong  # lt  # int  # member  # public  # staticvoid 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Python企业级消息系统教程_KafkaRabbitMQ高并发应用  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  想要更高端的建设网站,这些原则一定要坚持!  昵图网官方站入口 昵图网素材图库官网入口  js实现点击每个li节点,都弹出其文本值及修改  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  简单实现jsp分页  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  如何打造高效商业网站?建站目的决定转化率  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  如何实现建站之星域名转发设置?  如何在云服务器上快速搭建个人网站?  进行网站优化必须要坚持的四大原则  如何快速启动建站代理加盟业务?  Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  Laravel怎么实现验证码(Captcha)功能  如何快速生成ASP一键建站模板并优化安全性?  如何获取PHP WAP自助建站系统源码?  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  nginx修改上传文件大小限制的方法  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  再谈Python中的字符串与字符编码(推荐)  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  java ZXing生成二维码及条码实例分享  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  VIVO手机上del键无效OnKeyListener不响应的原因及解决方法  如何快速搭建自助建站会员专属系统?  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  详解vue.js组件化开发实践  如何在VPS电脑上快速搭建网站?  企业网站制作这些问题要关注  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  简单实现Android验证码  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  Python高阶函数应用_函数作为参数说明【指导】  如何在IIS中新建站点并解决端口绑定冲突?  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  IOS倒计时设置UIButton标题title的抖动问题  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  Internet Explorer官网直接进入 IE浏览器在线体验版网址  Laravel定时任务怎么设置_Laravel Crontab调度器配置