当前位置: 首页 > news >正文

C++ 类成员函数指针

之前在设计指令类的时候,需要对传入的指令和参数进行解析和执行。
有点类似于int main(int argc, char** argv)
这种类的成员函数有一个特点:数量多,返回值和参数列表大多相同。而且他们的函数名一一对应指令集(一个由指令字符串构建的数组)。

之前一直是用switch语句来判断具体执行那一个成员函数。这种方法写起来的代码非常长,也很容易漏掉break

后来就想到用函数指针来解决这个问题。可以直接创建一个关于类的成员函数指针数组,通过下标的方式来确定具体执行的是哪一个成员函数。

首先创建一个中介函数,让中介函数判断应该调用哪个功能函数。

成员函数指针和普通函数指针有所不同。

具体实现如下

#include <iostream>
#include <vector>class test
{
public:test(int a){this->data = a;// 中介函数this->pShow(this);}// 中介函数必须为静态staticstatic void pShow(test *t){// 创建指向函数show的指针// 注意:此指针可以对不同的对象进行操作,调用的成员函数属于传入的类指针指向的对象的成员函数void (test::*p)(void) = &test::show;// 调用t指向对象的show(t->*p)();// 成员函数指针数组,注意vector的模板类型// 数组中的函数,返回值和参数列表必须相同const std::vector<void (test::*)(void)> funcs = {&test::show,&test::delete_data};// 调用t对象的delete_data(t->*funcs[1])();// 调用t对象的show(t->*funcs[0])();}private:void show(){printf("%d", this->data);}void delete_data(){data = 0;}
private:int data;
};int main(void)
{test t(314159), t2(123456);return 0;
}
http://www.xdnf.cn/news/860887.html

相关文章:

  • 操作系统3.2:连续型分配之动态分区、内存回收
  • 【Opencv】cv::rectangle、cv::getTextSize、cv::putText、cv::Rect函数详解和示例
  • Linux培训班多少钱?推荐6大Linux云计算运维培训机构名单
  • 13 万字 C 语言从入门到精通保姆级教程2021 年版
  • Windows核心编程学习笔记(20)--同步设备I/O与异步设备I/O1
  • 以数据安全为核心的安全立体防御体系解决方案
  • 摄氏度和开氏度的换算_摄氏度与开氏度换算(开氏度和摄氏度的换算公式)
  • 红客是什么呢?零基础如何成为红客!
  • 八数码难题的多种解法
  • Arduino as ISP 下载器烧录BootLoader的细节详解
  • 聚类分析
  • sql server2008的安装包和密钥
  • 我的软考经验分享
  • 创业者不得不去的10个网站!
  • activate-power-mode安装与设置(去掉activate-power-mode右上角图标)
  • 苹果手机下载不了软件怎么办?6个解决方案等你来
  • aptana手动配置python环境_关于使用Aptana+Pydev构建Python开发环境(Django)
  • 运维工作内容
  • 分销系统搭建流程详解,教你搭建SaaS分销系统!
  • 高防服务器如何防御?
  • 【专访】首届腾讯社交广告“高校算法大赛”落幕 冠亚季军团队参赛心得精彩分享
  • 网页客服系统全解析:在线服务的高效解决方案
  • C语言基本语法知识
  • java入门基础语法--方法(超全详细)
  • 20种富含维生素A的食物盘点,赶紧保存收藏!
  • 减肥日记
  • kernel printk的打印等级
  • 华为鸿蒙系统好在哪,华为鸿蒙2.0可以替代安卓吗,华为鸿蒙2.0优势在哪
  • 关于EEG以及如何解释EEG?
  • 百度旗下手机应用大盘点