【C++引用进阶】C++11 回调函数
文章目录
回调函数的实现往往是应用层(更上层)的程序拥有,而调用者是底层的程序。
相当于说,底层的程序是一个服务员,应用层程序是客人,客人需要客房服务(A函数),服务员需要在一个应许的时间提醒(调用A函数)客人,具体的提示方式由客户决定(A函数实现细节),但客人需要**提前告知(登记回调函数)**服务员提醒方式
函数的回调主要靠,把定义的函数指针传递给调用的对象。
classA
{
private:
// 回调函数
std::function<void()> cb_;
public:
ClassA();
void funca();
// 设置回调函数
void setcb(std::function<void()> fn)
{
cb_ = fn;
};
}
classB
{
public:
// 回调函数的具体实现
void funcb();
}
classA::classA()
{
// 登记回调函数,需要传入this, 如果需要参数就需要
// std::placeholders::_xxx
this->setcb(std::bind(&classB:funcb,this));
}
void classA::funca()
{
// 调用回调函数
cb_();
}