C++ 中回调函数详解及简单实例
回调函数调用关系图
对于第一种情况,主程序可以从执行到回调函数,也可以不执行回调函数,关键看宿主函数是否调用了回调函数。
对于第二种情况,主程序可以从执行到回调函数,也可以不执行回调函数,关键看宿主函数是否调用了回调函数。主程序不知道宿主函数什么时候调用回调函数,因为调用函数启动了线程,这样,主程序就不必关心宿主函数什么时候调用回调函数了,主程序可以释放出来做自己的事了。
代码示例
#include <stdio.h> typedef voID(*lpFunc)(voID *,char *); // 函数指针 // 回调函数的宿主函数,在这里回调用函数被使用,voID GetCallBack(voID * lpVoID,lpFunc callback) { callback(lpVoID,"test"); } class A{ public: A(){}; voID outname(char szAlarm[]){ printf("my name is %s /n",szAlarm); } // 被宿主调用的回调函数 static voID fCallback(voID *lpVoID,char szAlarm[]){ A * p = (A*)(lpVoID); p->outname(szAlarm); } //调用外部宿主函数,当Test函数调用过宿主函数以后,Test就再也不关心宿主函数 //什么时候调用回调函数了,因为那时宿主函数自己的事了 voID test(){ GetCallBack(this,fCallback); } }; int main(voID) { A a; a.test(); }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
总结以上是内存溢出为你收集整理的C++ 中回调函数详解及简单实例全部内容,希望文章能够帮你解决C++ 中回调函数详解及简单实例所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)