c++ 注册回调函数研究

来源:互联网 发布:深入浅出数据分析 微盘 编辑:程序博客网 时间:2024/06/18 00:25

一 何为注册回调 

   注册回调简单解释就是一个高层调用底层,底层再过头来用高层,这个过程就叫注册回调, 连接高层和底层就叫注册回调函数。高层程序C1调用底层程序C2,而在底层程序C2 又调用了高层程序C2的callback函数,那么这个callback函数对于高层程序C1来说就是回调函数。 在设计模式中这个方式叫回调模式。


二 注册回调函数的实例:

//底层程序 C2

#include<iostream>using namespace std;class CCallback{public:virtual void onCallbackFunc(int value,int type) =0;};class ClassA{public: ClassA(CCallback *pCallbackFunc){m_pCallBack = pCallbackFunc;}void showValue(){m_pCallBack->onCallbackFunc(15,0);m_pCallBack->onCallbackFunc(17,1);}private:CCallback *m_pCallBack;};

//高层程序 C1

#include<iostream>#include"ClassA.hpp"using namespace std;class ClassB : public CCallback{public:ClassB(){m_ClassA = new ClassA(this);}void onCallbackFunc(int value,int type){if(type == 0){cout<<"Typ_ZERO =  "<< value<<endl;}else{cout<<"Typ_Other =  "<< value<<endl;}}void TestShowData(){m_ClassA->showValue();}public:ClassA * m_ClassA;};


//主程序 main 

#include "stdafx.h"#include"ClassB.hpp"int _tmain(int argc, _TCHAR* argv[]){ClassB *m_classB =new ClassB();m_classB->TestShowData();system("pause:");return 0;}

测试结果:



上面就是一个简单的注册回调的过程。


三 : 注册回调有何作用

 注册回调 可以让调用者与被调用者分开。调用者不关心谁是被调用者,所有它需知道的,只是存在一个具有某种特定原型、某些限制条件(如返回值为int)的被调用函数。





1 0
原创粉丝点击