用typedef定义函数指针类型(转)
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定义函数指针类型(转)相关推荐
- typedef定义函数指针类型的使用
定义函数指针 定义函数指针的方法,返回值与参数列表要与指针所要指向的函数一致 返回值 (*函数指针名)(参数列表); 使定义的函数指针ptrFunc指向函数Func,并且使用ptrFunc ptrFu ...
- c/c++ typedef定义函数指针(Hook前奏2)
文章目录 简介 为什么一定要使用 typedef 定义函数指针呢? 简介 关于函数指针的介绍,点击超链接即可查看,这里就不做过多说明了,或者可以点击这里: https://blog.csdn.net/ ...
- 【C++】宏定义函数指针类型
1.宏定义不分配内存,变量定义分配内存. 2.宏名和参数的括号间不能有空格 3.宏替换只作替换,不做计算,不做表达式求解 //下面是正确的标准的写法 typedef int(FUNC1)(int in ...
- typedef 定义函数指针
原文地址:typedef 定义函数指针作者:兰音 (一)简单的函数指针的应用. //形式1:返回类型(*函数名)(参数表) char (*pFun)(int); char glFun(int a){ ...
- 使用 typedef 定义函数指针,更优雅的使用函数指针
简介 关于函数指针的介绍,这里就不做过多说明了,不了解的同学可以看看这篇博客: https://blog.csdn.net/afei__/article/details/80549202 使用 typ ...
- C语言之typedef定义函数指针(十三)
一.typedef两种用法 1.定义已有类型的别名typedef 类型 定义名;栗子: typedef char *pChar; pChar s1, s2, s3; 注意:s1.s2.s3都被定义为c ...
- c语言中结构体类型定义的函数指针,结构体中定义函数指针
结构体指针变量的定义 定义结构体变量的一般形式如下:形式1:先定义结构体类型,再定义变量struct 结构体标识符{ 成员变量列表;-};struct 结构体标识符 *指针变量名;变量初始化:stru ...
- 结构体中定义函数指针
结构体指针变量的定义,定义结构体变量的一般形式如下: 形式1:先定义结构体类型,再定义变量 struct结构体标识符 { 成员变量列表;- }; struct 结构体标识符 *指针变量名; 变量初始化 ...
- 函数指针和函数指针类型
参考:https://blog.csdn.net/candyliuxj/article/details/6339414 函数指针 1. 定义 每一个函数都占用一段内存单元,它们有一个起始地址, ...
最新文章
- 【OpenGL】向Shader中传递数据
- zabbix-3.0.4添加对windows 2008r2的监控
- Android隐式(远程)启动Service
- oracle active data guard概述
- Windows 10的应用体验之二
- Eclipse新建的Maven项目想修改DynamicWebModule,直接去项目目录下修改
- http超文本传输协议的http头部分析
- vue获取本地php数据,Vue-cli项目获取本地json文件数据的实例
- java jtable 单元格编辑_java – 在基于JTable面板的单元格编辑器中...
- 开创交互式电脑绘图先河,虚拟现实之父传奇
- kali linux 桌面消失_Kali安装好后,需要修改的一些常用配置
- krpano 运算符
- python 渲染3d模型_Python中的3D软件渲染
- 前端常用js方法工具封装
- 最新版FusionCharts2D面积图
- FMDB的简单应用(4篇)
- 计算机系学天体物理,中科院南京天文光学技术研究所专业介绍:天体物理
- Codeforces118D Caesar's Legions(DP)
- C++算法设计与分析例题代码(基础篇)
- GL Studio 5 安装与体验
热门文章
- php周计划表_PHP学习计划书
- 主题图片_临床医学院“树树皆秋色,山山唯落晖”主题图片征集活动
- mac 思科 链路聚合_交换技术链路聚合配置
- 开发日记-20190326
- python coding style guide 的快速落地实践——业内python 编码风格就pep8和谷歌可以认作标准...
- leetcode 136. Single Number
- 矩阵管理——本质是职能分工,例如所有部门都执行财务部门制定的财务制度而不会各自为政...
- 从pfx里面 解析出公私钥
- AJAX(二)jquery ajax
- LiveQing全新升级的RTMP流媒体服务器支持HLS(m3u8)、RTMP、HTTP-FLV高性能分发