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)的被调用函数。





  • 12
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值