简单说明:
简单来说,就是B在完成某件事的时候,自动执行A的相关操作~
A、B可以是普通函数,也可以是类
大致可以分为三种方式的回调:
1、普通函数的方式
函数定义:
void print1()
{
cout << "1" << endl;
}
void print2()
{
cout << "2" << endl;
}
void callback(void(*printNum)())
{
printNum();
}
函数调用:
callback(print1);
callback(print2);
2、静态成员函数的方式
函数定义:
class B
{
public:
B()
{
}
void setCallBack(void (*callback)(int,int));
};
void B::setCallBack(void (*callback)(int,int))
{
callback(1, 2);
}
class A
{
public:
A()
{
}
static void doFunc(int a, int b)
{
cout << "static func" << endl;
}
void func()
{
B b;
b.setCallBack(doFunc);
}
void add(int *a)
{
*a += 2;
}
};
调用方式:
B b;
b.setCallBack(A::doFunc);
A a;
a.func();
3、非静态成员的方式
可以使用代理类的方式
也可以导出类指针的方式
大致思路如下:
创建一个回调的类,包括需要回调的成员函数
B类中提供注册回调的接口,并调用回调函数
A中把回调类的指针通过B提供的接口注册给B,这样B中就可以使用回调函数了
具体demo下载地址:
https://download.youkuaiyun.com/download/zhao3132453/11329053