首页 C++中的函数指针及应用

C++中的函数指针及应用

举报
开通vip

C++中的函数指针及应用C++中的函数指针及其应用 swith/case作为一种基础的流程控制语句,在我们的日常编码中应用很广泛,但是当case分支很多,每种case下的处理流程又比较复杂时,整个switch/case结构可能会很庞大、随之带来的是函数的圈复杂度很高,代码不利于维护,其实这时候我们可以考虑用函数指针的数组取代swith/case分支。 C中的函数指针大家估计都比较熟悉了,如同数据指针具有所指的数据类型一样,函数指针也具有类型,它的类型即为所指函数的类型,包括返回值和参数列表,如int (*fun)(int i, dou...

C++中的函数指针及应用
C++中的函数指针及其应用 swith/case作为一种基础的流程控制语句,在我们的日常编码中应用很广泛,但是当case分支很多,每种case下的处理流程又比较复杂时,整个switch/case结构可能会很庞大、随之带来的是函数的圈复杂度很高,代码不利于维护,其实这时候我们可以考虑用函数指针的数组取代swith/case分支。 C中的函数指针大家估计都比较熟悉了,如同数据指针具有所指的数据类型一样,函数指针也具有类型,它的类型即为所指函数的类型,包括返回值和参数列 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf ,如int (*fun)(int i, double j)便定义了一个指向返回值类型为int,含有两个参数、类型分别为int 和double的函数指针,C++中的函数指针跟C中相似,不同的是C++中的函数指针多了域限定符,即C++中的函数指针具有三要素:参数个数及类型、返回值类型、所属的类,如对于如下的类: class test { public: bool add(int i, int j); public: bool (test::*pFun)(int n, int m); } 我们要定义指向成员函数test的函数指针,则形式如下:bool (test::*pFun)(int n, int m),指向类成员函数的指针必须通过类对象或指向该类类型的对象的指针来访问,如: test a, *pTest; (a.*pFun)(int i, int j); (pTest->*pFun)( int i, int j); 如果要定义该类型函数指针的数组,形式如下:bool (test::*pFun[MAX_NUM])(int n, int m); 此时对于如下结构的代码: class test { public: bool ProcessMsg(const BYTE *pMsg); BYTE GetCommCode(const BYTE *pMsg); } test::ProcessMsg(const BYTE *pMsg) { BYTE bCommCode = GetCommCode(pMsg); switch(bCommCode) { case 0: //一些复杂的处理 case: //又一些复杂的处理 case: //还是复杂的处理 … default: } } 此时,我们可以把每个case下的处理提出来,作为一个单独的函数,因为这些处理相似,那么这些函数可能具有相同的类型(返回值、参数列表都相同),然后定义一个该类型的函数指针数组,在初始化是利用这些函数的制止初始化该指针数组,然后在processMsg()函数中直接通过函数指针数据调用这些函数即可,如下: class test { public: test(); bool ProcessMsg(const BYTE *pMsg); BYTE GetCommCode(const BYTE *pMsg); bool processMsgA(const BYTE *pMsg); bool processMsgB(const BYTE *pMsg); bool processMsgC(const BYTE *pMsg); ... public: bool (test::pMsgProcess[MAX_NUM])(const BYTE *pMsg); } test::test() { pMsgProcess[0] = processMsgA; pMsgProcess[1] = processMsgB; pMsgProcess[2] = processMsgC; ... } test::ProcessMsg(const BYTE *pMsg) { BYTE bCommCode = GetCommCode(pMsg); (this->*pMsgProcess[bCommCode])(pMsg); }
本文档为【C++中的函数指针及应用】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_198886
暂无简介~
格式:doc
大小:30KB
软件:Word
页数:3
分类:互联网
上传时间:2013-05-05
浏览量:12