一杯清酒邀明月
天下本无事,庸人扰之而烦耳。
posts - 3121,comments - 209,views - 578万

  回调函数的作用和用途,我就不多说了,之前也讨论过, 现在再来熟悉一下与回调函数相关的程序。 我们知道, 回调机制, 就是通过函数指针来实现的。

  说白了, 就是注册与回调。

  下面,直接上菜, 希望大家品尝:

复制代码
 1 #include <iostream>
 2 using namespace std;
 3  
 4 typedef void(*PF)();
 5 PF g_pf = NULL;
 6  
 7  
 8 /**********************************/
 9 // B模块
10  
11 // B模块向外提供的回调函数注册接口, 也就是说,提供注册服务, 想注册的,调用该接口即可
12 void registerFun(PF pf)
13 {
14     g_pf = pf;
15 }
16  
17  
18 // B模块的某函数, 在一定条件下被触发
19 void fun()
20 {
21     // 执行别的模块注册过来的回调函数
22     (*g_pf)(); // or g_pf();
23 }
24  
25 /**********************************/
26  
27  
28  
29  
30 /**********************************/
31 // A模块
32  
33 // A模块的回调函数
34 void callBack()
35 {
36     cout << "call back function" << endl;
37 }
38  
39 // A 模块的主函数
40 int main()
41 {
42     // A模块利用B模块的注册接口, 向B模块注册
43     registerFun(callBack);
44  
45     // 在一定条件下,B模块的fun函数被触发了
46     fun();
47  
48     return 0;
49 }
50  
51 /**********************************/
复制代码

下面来搞笑一下:

复制代码
 1 #include <iostream>
 2 using namespace std;
 3  
 4 typedef void(*PointerToAction)();
 5 PointerToAction g_pf = NULL;
 6  
 7  
 8 /**********************************/
 9 // 公司
10  
11 // 公司提供登记服务, pf指向员工登记的某行为,比如提前登记获许在公司喝酒
12 void registerAction(PointerToAction pf)
13 {
14     // 公司记录该员工已经登记获许的行为,比如可以在公司内喝酒
15     g_pf = pf;
16 }
17  
18  
19 // 在公司内, 发生了该事件 :员工在公司内抽烟,被抓住了
20 void drinkAlcoholInCompany()
21 {
22     // 去翻阅登记信息, 调取当时的登记资料
23     (*g_pf)();
24 }
25  
26 /**********************************/
27  
28  
29  
30  
31 /**********************************/
32 // 员工
33  
34 // 员工将要登记的行为,即登记在公司内获许喝酒
35 void callBack()
36 {
37     cout << "登记在公司内部可以喝酒, 我爱喝就喝。" << endl;
38 }
39  
40 // 员工开始活动了
41 int main()
42 {
43     // 员工第一天上班,去注册登记可以在公司内喝酒
44     registerAction(callBack);
45  
46     // 员工在公司内喝酒,被抓住了
47     drinkAlcoholInCompany();
48  
49     return 0;
50 }
51  
52 /**********************************/
复制代码

最后,我要说,我不爱喝酒。

posted on   一杯清酒邀明月  阅读(518)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
< 2025年3月 >
23 24 25 26 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

点击右上角即可分享
微信分享提示