• c++回调函数杂谈


    今天有一个小白问我:回调函数都是同步运行,好像没有什么意义呀?

    额,一下就被问懵了。你是不是也有这样的感觉呢?

    我说:1、回调函数可以放在线程中,那么程序就可以同时在做两件事情了。

    2、回调函数至少是切换了代码的命名空间,放在不同的cpp中,可以可以引用的对象可以不同。

    3、回调函数是改变写代码的思维方式。主线程将任务分配出去,等待完成后通知我即可。

    在一个人静下来思考思考后,写下这篇杂文。

    回调函数的定义

    回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。

    回调函数的作用

    1、对于调用方,可以降低耦合(也就是可以减少需要关心的东西),仅在特定情况发生时处理。例如登陆模块,如果系统已经保存了账号密码内部就会自动登陆,仅失败时,才通知主线程显示登陆界面等待用户输入账号密码。

    2、对于函数的设计者,可以设计一个通用的函数。例如列表,排序时通过回调函数得到排序顺序,就可以支持任意列的排序。

    3、对于库的设计者,可以设计一个通用的功能,将部分功能留给调用方实现。例如海康威视的视频控件,将视频流通过回调函数返回到调用方,从而无需实现视频流绘制到窗口。

    其他实现方式

    1、模板类

    在基类中实现模板功能。子类实现对应的接口函数。

    2、接口类

    定义接口类,函数根据接口类指针调用对应的函数。调用方通过继承接口实现相关功能。

    3、windows事件

    4、windows消息

  • 相关阅读:
    string_view暴力串串题
    字符串hash暴力串串题
    C++刷leetcode几点注意事项
    微软面试算法题(整理)
    Leetcode中的Dijkstra算法
    gdb在线调试多线程程序
    2022亚马逊校园招聘软件开发实习提前批面试题
    python模块tqdm(进度条)的使用
    解决 Failed while installing Dynamic Web Module
    最新eclipse从零开始建立SpringMVC项目(详细过程)
  • 原文地址:https://www.cnblogs.com/shanshisanren/p/11945254.html
Copyright © 2020-2023  润新知