回调函数
c++类成员函数作为回调函数
普通函数:你所写的函数调用系统函数,你只管调用,不管实现。
回调函数:系统调用你所写的函数,你只管实现,不管调用。
步骤:把函数注册给类B对象成员,b对象调用相关函数即会执行注册的那个函数。
那回调函数到底是如何使用的呢?我们先来解决个小问题:
1、回调函数在什么场景有用?
我要在特定时候执行一个任务,至于是什么时候我自己都不知道。比如某一时间到了或者某一事件发生或者某一中断触发。
2、回调函数怎么起作用?
把我要执行的这个任务写成一个函数,将这个函数和某一时间或者事件或者中断建立关联。当这个关联完成的时候,这个函数华丽的从普通函数变身成为回调函数。
3、回调函数什么时候执行?
当该回调函数关心的那个时间或者事件或者中断触发的时候,回调函数将被执行。
一般是触发这个时间、事件或中断的程序主体(通常是个函数或者对象)观察到有一个关注这个东东的回调函数的时候,这个主体负责调用这个回调函数。
4、回调函数有什么好处?
(同步和异步指的是对于消息结果的获取是客户端主动获取还是由服务器间接推送)。
最大的好处是你的程序变成异步了。也就是你不必再调用这个函数的时候一直等待这个时间的到达、事件的发生或中断的发生(万一一直不发生,你的程序会怎么样?)。再此期间你可以做做别的事情,或者四处逛逛。当回调函数被执行时,你的程序重新得到执行的机会,此时你可以继续做必要的事情了。
借鉴知友的一个例子:
你去食堂打饭,你喜欢吃小炒热饭菜,所以你去了一个小炒窗口。
你跟老板说了要×××盖饭,老板说:你是100号,喊到你的号你就来拿菜。
然后你在旁边跟同学吹牛、或者看手机、或者干点你想干的任何事情。。。
然后你听到老板喊100号并且把菜放到窗口,你走到窗口,拿到你的菜。