远风工作室
C++博客
|
首页
|
发新随笔
|
发新文章
|
联系
|
聚合
|
管理
随笔:92 文章:0 评论:72 引用:0
回调函数实现方式:函数指针与函数对象
被调用函数调用的外部函数成为回调函数,windows程序中WndProc函数就是一个回调函数的典型形式。当函数不在同一文件当中(比如动态库)时,要调用其他程序中的函数就只有才用回调的方式。回调函数一般采用函数指针或者函数对象的形式实现。
(1)函数指针:
int
A(
char
*
p);
//
回调函数
typedef
int
(
*
CallBack)(
char
*
p);
//
声明CallBack类型的函数指针
CallBack myCallBack;
//
定义函数指针变量
myCallBack
=
A;
//
赋值,得到函数A的地址
B(A,
5
);
//
调用B函数
void
B(CallBack lpCall,
int
num)
{
//
B自己的语句
lpCall(“Hello”);
//
B自己的语句
}
(2)函数对象:
函数对象是重载了operator()操作符的类对象,与普通的函数行为类似。一般情况下用函数对象优于函数指针,主要因为:
第一,函数对象具有封装性,可以在不改动外部接口的情况下修改内部操作;
第二,函数对象可以通过数据成员存储先前调用结果,而普通函数只能通过静态变量等方式实现;
第三,函数对象可以实现内联调用,加快程序速度。
class
CallBack
{
public
:
int
operator
()(
int
num)
//
重载()操作符
{
//
…………………………..
}
}
void
B(CallBack call,
int
num)
//
定义B函数
{
//
B自己的语句
call(num);
//
B自己的语句
}
B(CallBack(),
5
);
//
调用B函数
发表于 2009-08-28 21:58
远风
阅读(619)
评论(0)
编辑
收藏
引用
所属分类:
C/C++基础
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
C/C++小结杂烩
32位系统中VC++可识别类型
使用MessageBox进行多线程调试
const在C和C++中的不同
数据存储类型:auto/static/register/extern
string用法总结
类的特殊大小情况
常用Win IDE库函数
C/C++小结杂烩
LIB和DLL的区别与使用
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
<
2011年3月
>
日
一
二
三
四
五
六
27
28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
留言簿
(3)
给我留言
查看公开留言
查看私人留言
随笔分类
(93)
ACM(5)
(rss)
C/C++基础(20)
(rss)
Linux编程(16)
(rss)
MFC(7)
(rss)
MySQL(2)
(rss)
OPNET仿真(11)
(rss)
PHP(13)
(rss)
Python(3)
(rss)
STL(4)
(rss)
Web技术(2)
(rss)
Windows管理(3)
(rss)
数据结构 / 算法(7)
(rss)
收藏夹
(2)
C/C++基础(1)
(rss)
数据结构 / 算法(1)
(rss)
搜索
积分与排名
积分 - 328138
排名 - 73
最新评论
1. re: makefile和make规则
可以评论么
--冯智浩
2. re: PHP调用外部程序的方法
大的as打算阿达的
--硕大的
3. re: LIB和DLL的区别与使用
太赞,收藏一下,谢谢
--mymimi1988
4. re: LIB和DLL的区别与使用
好文,好内容;
--wsdxyz
5. re: LIB和DLL的区别与使用
写的非常详细,感谢。
--Forward
6. re: LIB和DLL的区别与使用
非常好,说得很详细,也很明白,学习了!
--xihuwuyu
7. re: LIB和DLL的区别与使用
感觉很好,对于才接触dll的我来说很够用。。
--Chosan
8. re: VC中ListCtrl经验总结【转载】[未登录]
总结的很好啊,转了
--king
9. re: LIB和DLL的区别与使用
就我自己没看太懂吗
--AzzStyle
10. re: LIB和DLL的区别与使用
通俗易懂,呵
--我的
阅读排行榜
1. LIB和DLL的区别与使用(76397)
2. 虚拟机VMware tools安装【转载】(36560)
3. Linux串口编程(24827)
4. tar命令的C参数(18840)
5. 判断素数的算法(11399)
6. VC中ListCtrl经验总结【转载】(11280)
7. PHP调用外部程序的方法(11061)
8. makefile和make规则(9176)
9. C++进阶必读书籍【转载】(8410)
10. insert时出现主键冲突的处理方法【转载】(8200)