回调函数的作用和用途,我就不多说了,之前也讨论过, 现在再来熟悉一下与回调函数相关的程序。 我们知道, 回调机制, 就是通过函数指针来实现的。
说白了, 就是注册与回调。
下面,直接上菜, 希望大家品尝:
#include <iostream>using namespace std;typedef void(*PF)();PF g_pf = NULL;/**********************************/// B模块// B模块向外提供的回调函数注册接口, 也就是说,提供注册服务, 想注册的,调用该接口即可void registerFun(PF pf){ g_pf = pf;}// B模块的某函数, 在一定条件下被触发void fun(){ // 执行别的模块注册过来的回调函数 (*g_pf)(); // or g_pf();}/**********************************//**********************************/// A模块// A模块的回调函数void callBack(){ cout << "call back function" << endl;}// A 模块的主函数int main(){ // A模块利用B模块的注册接口, 向B模块注册 registerFun(callBack); // 在一定条件下,B模块的fun函数被触发了 fun(); return 0;}/**********************************/
下面来搞笑一下:
#include <iostream>using namespace std;typedef void(*PointerToAction)();PointerToAction g_pf = NULL;/**********************************/// 公司// 公司提供登记服务, pf指向员工登记的某行为,比如提前登记获许在公司喝酒void registerAction(PointerToAction pf){ // 公司记录该员工已经登记获许的行为,比如可以在公司内喝酒 g_pf = pf;}// 在公司内, 发生了该事件 :员工在公司内抽烟,被抓住了void drinkAlcoholInCompany(){ // 去翻阅登记信息, 调取当时的登记资料 (*g_pf)();}/**********************************//**********************************/// 员工// 员工将要登记的行为,即登记在公司内获许喝酒void callBack(){ cout << "登记在公司内部可以喝酒, 我爱喝就喝。" << endl;}// 员工开始活动了int main(){ // 员工第一天上班,去注册登记可以在公司内喝酒 registerAction(callBack); // 员工在公司内喝酒,被抓住了 drinkAlcoholInCompany(); return 0;}/**********************************/
最后,我要说,我不爱喝酒。
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow