typedef可以用于定义函数指针类型:

【语法】
typedef <返回类型> (*<函数类型名>)(参数表)
typedef <返回类型> (<类名>::*<函数类型名>)(参数表)

【用途】
1、可以用来定义该函数类型的函数指针,就不用每次使用函数指针都要写一次函数原型了;
2、有了类型名,就可以使用在容器里面,譬如map<int, 类型名>,用于实现灵活的函数调用。

【示例】

例1:
typedef void (*PF)(int x);

void func1(int x){ cout<<"func1:"<<x<<endl;}

void func2(int x){ cout<<"func2:"<<x<<endl;}

void main()
{
  PF pFunc;    //声明一个函数指针只需要用PF类型名
  pFunc = func1;  //此处也可以使用pFunc = &func1;
  pFunc(38);
  pFunc = func2;
  pFunc(99);
}

-----------------------------------------------------------------------------------------------

例2:
class CUtil
{
public:
  CUtil();
  typedef void (CUtil::*pUFunc)(int);  //定义原型为void CUtil::func(int)的函数指针的别名为pUFunc
  map<int, pUFunc> funcMap;     //可以用做map容器的元素类型
  void laner(int x);
  void execute();
};

CUtil::CUtil()
{
  funcMap[0] = &CUtil::laner;  //这里初始化map容器,关联数字0和函数laner
}

void CUtil::laner(int x)
{
  cout<<"laner:"<<x<<endl;
}

void CUtil::execute()
{
  (this->*funcMap[0])(38);   //调用map[0]关联的函数
  //注意1:这里必须使用this->,否则会有error C2171: “*”: “void (__thiscall CUtil::* )(int)”类型的操作  数非法的错误
  //注意2:这里必须使用*解引用,才能实现函数调用,否则会有error C2064: 项不会计算为接受 1 个参数的函数的错误
}

void main()
{
  CUtil pUtil = new CUtil();
  pUtil->execute();
  (pUtil->*(pUtil->funcMap[0]))(38);  //与上一句等效,注意括号要用正确
}

转载于:https://www.cnblogs.com/xiao0913/p/3799775.html

用typedef定义函数指针类型(转)相关推荐

  1. typedef定义函数指针类型的使用

    定义函数指针 定义函数指针的方法,返回值与参数列表要与指针所要指向的函数一致 返回值 (*函数指针名)(参数列表); 使定义的函数指针ptrFunc指向函数Func,并且使用ptrFunc ptrFu ...

  2. c/c++ typedef定义函数指针(Hook前奏2)

    文章目录 简介 为什么一定要使用 typedef 定义函数指针呢? 简介 关于函数指针的介绍,点击超链接即可查看,这里就不做过多说明了,或者可以点击这里: https://blog.csdn.net/ ...

  3. 【C++】宏定义函数指针类型

    1.宏定义不分配内存,变量定义分配内存. 2.宏名和参数的括号间不能有空格 3.宏替换只作替换,不做计算,不做表达式求解 //下面是正确的标准的写法 typedef int(FUNC1)(int in ...

  4. typedef 定义函数指针

    原文地址:typedef 定义函数指针作者:兰音 (一)简单的函数指针的应用. //形式1:返回类型(*函数名)(参数表) char (*pFun)(int); char glFun(int a){ ...

  5. 使用 typedef 定义函数指针,更优雅的使用函数指针

    简介 关于函数指针的介绍,这里就不做过多说明了,不了解的同学可以看看这篇博客: https://blog.csdn.net/afei__/article/details/80549202 使用 typ ...

  6. C语言之typedef定义函数指针(十三)

    一.typedef两种用法 1.定义已有类型的别名typedef 类型 定义名;栗子: typedef char *pChar; pChar s1, s2, s3; 注意:s1.s2.s3都被定义为c ...

  7. c语言中结构体类型定义的函数指针,结构体中定义函数指针

    结构体指针变量的定义 定义结构体变量的一般形式如下:形式1:先定义结构体类型,再定义变量struct 结构体标识符{ 成员变量列表;-};struct 结构体标识符 *指针变量名;变量初始化:stru ...

  8. 结构体中定义函数指针

    结构体指针变量的定义,定义结构体变量的一般形式如下: 形式1:先定义结构体类型,再定义变量 struct结构体标识符 { 成员变量列表;- }; struct 结构体标识符 *指针变量名; 变量初始化 ...

  9. 函数指针和函数指针类型

    参考:https://blog.csdn.net/candyliuxj/article/details/6339414 函数指针 1.     定义 每一个函数都占用一段内存单元,它们有一个起始地址, ...

最新文章

  1. 【OpenGL】向Shader中传递数据
  2. zabbix-3.0.4添加对windows 2008r2的监控
  3. Android隐式(远程)启动Service
  4. oracle active data guard概述
  5. Windows 10的应用体验之二
  6. Eclipse新建的Maven项目想修改DynamicWebModule,直接去项目目录下修改
  7. http超文本传输协议的http头部分析
  8. vue获取本地php数据,Vue-cli项目获取本地json文件数据的实例
  9. java jtable 单元格编辑_java – 在基于JTable面板的单元格编辑器中...
  10. 开创交互式电脑绘图先河,虚拟现实之父传奇
  11. kali linux 桌面消失_Kali安装好后,需要修改的一些常用配置
  12. krpano 运算符
  13. python 渲染3d模型_Python中的3D软件渲染
  14. 前端常用js方法工具封装
  15. 最新版FusionCharts2D面积图
  16. FMDB的简单应用(4篇)
  17. 计算机系学天体物理,中科院南京天文光学技术研究所专业介绍:天体物理
  18. Codeforces118D Caesar's Legions(DP)
  19. C++算法设计与分析例题代码(基础篇)
  20. GL Studio 5 安装与体验

热门文章

  1. php周计划表_PHP学习计划书
  2. 主题图片_临床医学院“树树皆秋色,山山唯落晖”主题图片征集活动
  3. mac 思科 链路聚合_交换技术链路聚合配置
  4. 开发日记-20190326
  5. python coding style guide 的快速落地实践——业内python 编码风格就pep8和谷歌可以认作标准...
  6. leetcode 136. Single Number
  7. 矩阵管理——本质是职能分工,例如所有部门都执行财务部门制定的财务制度而不会各自为政...
  8. 从pfx里面 解析出公私钥
  9. AJAX(二)jquery ajax
  10. LiveQing全新升级的RTMP流媒体服务器支持HLS(m3u8)、RTMP、HTTP-FLV高性能分发