C++实现回调

#include <iostream>
#include <windows.h>
#include <sstream>
#include <string>
using namespace std;
class Listener{
public:
virtual void callBack(string str)const=0; 
};
class Service{
public:
Service(){};
void getSomething(Lister * listener){
//getSomething
//例如做网络请求等耗时等操作
Sleep(1000);
stringstream ss;
//模仿请求回来的参数
ss<<rand();
string str="hello:"+ss.str();
//回调
listener->callBack(str);
}
};
//实现监听器1
class ListenerImpl01:public Listener{
public:
  void callBack(string str)const{
  cout<<str<<" :listener01"<<endl;
  }
};
//实现监听器2
class ListenerImpl02:public Listener{
public:
void callBack(string str)const{
cout<<str<<":listener02"<<endl;
}
};
int main(){
Service *service=new Service();
//使用不同的监听器
//父类指针指向子类对象
Listener *listener01=new ListenerImpl01();
Listener *listener02=new ListenerImpl02();

service->getSomething( listener01);
service->getSomething( listener02);
}

版权声明:本文为plgy_Y原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。