#include <iostream>
using namespace std;
/**
@Author:happy
@Date:2018-10-24
@Summary:演示回调的基本原理
*/
// 内部真正实现功能的类的顶级接口
class InnerCallBackInterface
{
public:
InnerCallBackInterface()
{
}
virtual ~InnerCallBackInterface()
{
delete this;
}
public:
virtual int CallbackMethod(int a, int b) = 0;
};
// 外部使用类
class OuterClass
{
public:
OuterClass(InnerCallBackInterface* callBackInterface): callBackInterface(callBackInterface)
{
}
~OuterClass()
{
delete this;
}
public:
int function(int a, int b)
{
return callBackInterface -> CallbackMethod(a, b);
}
private:
InnerCallBackInterface* callBackInterface;
};
// 真正实现功能的类---实现加法功能
class AddClass: public InnerCallBackInterface
{
public:
int CallbackMethod(int a, int b)
{
return a + b;
}
};
// 真正实现功能的类---实现乘法
class MultiClass: public InnerCallBackInterface
{
public:
int CallbackMethod(int a, int b)
{
return a * b;
}
};
int main()
{
// 使用加法
cout << (new OuterClass(new AddClass)) -> function(4, 5) << endl;
// 使用乘法
cout << (new OuterClass(new MultiClass)) -> function(4, 5) << endl;
return 0;
}