用例子,通俗介绍回掉函数的使用

来源:互联网 发布:淘宝转化率控制在多少 编辑:程序博客网 时间:2024/06/05 15:37

说起回掉,一直感觉很神秘,网上书上查了很多次,给出的解释大同小异,得到了“回掉是函数指针实现的,用函数指针作为函数参数的一种运用”的认知。其实百度百科介绍的很详细了,但是没有实际运用之前并没有直观地感受,始终不得其法。 

最近接触的一个项目,里面用了大量的回掉。在接触大量的运用之后,终于有了真切地感受。从两方面介绍在实际应用中的认知。首先:回掉函数和API对应。API一般有底层实现,上层调用(一般底层都是成型的库,不能上层实现之后,再做底层);但是回掉可以很好的实现上层定义底层调用,功能类似于MFC的事件响应函数。其次:多方合作开发当中,回掉和普通函数对应。普通函数定义和使用都在同一方,一方即可可明确方法的使用时间和实现内容;回掉函数用在多方间,当定义者不知道何时调用时,即可以给调用方一个指针,让他使用,具体实现内容自己定义。

前者写了一个简单的接口框架工程,恰好存在dll生成方和调用dll方。略加修改,将回掉运用进去。示例如下:

API文件:

testOne类:

testTwo类:

测试工程:

运行结果:

如之前博文,上面两个简单工程。回掉函数:"[&](std::string str){std::cout<<str<<std::endl;}"在测试函数中定义,但是调用时间在dll工程中确定。很好的体现回掉函数的特点。