c++ 注册回调函数研究

一 何为注册回调 

   注册回调简单解释就是一个高层调用底层,底层再过头来用高层,这个过程就叫注册回调, 连接高层和底层就叫注册回调函数。高层程序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)的被调用函数。





阅读更多
换一批

没有更多推荐了,返回首页