我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:双彩网 > 正向信道 >

【C++基础之八】函数指针和回调函数

归档日期:06-15       文本归类:正向信道      文章编辑:爱尚语录

  C++很多类库都喜欢用回调函数,MFC中的定时器,消息机制,hook机制等待,包括现在在研究的cocos2d-x中也有很多的回调函数。

  什么是回调函数呢?回调函数其实就是一个通过函数指针调用的函数!假如你把A函数的指针当作参数传给B函数,然后在B函数中通过A函数传进来的这个指针调用A函数,那么这就是回调机制。A函数就是回调函数,而通常情况下,A函数是系统在符合你设定条件的情况下会自动执行,比如Windows下的消息触发等等。那么调用者和被调用者的关系就被拉开了,就像是中断处理函数那样。

  函数指针是一个指针,只是这个指针它不像普通的指针指向是是一个变量,此时它指向的是一个函数,也就是它存储的是一个函数的地址,如果我们愿意的话,可以改变这个它的值,让他由指向funA转变为指向funB,那么这个函数指针的作用就改变了。

  回调函数的使用其实和上面函数指针示例是很一致的,只是上面的实例中pFun是我们自己调用的。现在我们在MFC中让系统调用一下吧。

  也就是或如果为NULL的话,系统自动触发WM_Timer消息,然后调用OnTimer函数。

  另外,需要注意的是回调函数必须是全局函数或者静态成员函数,因为普通的成员函数会隐含着一个传递函数作为参数,也就是this指针。因此如果使用普通成员函数作为回调函数的话会导致函数参数个数不匹配,因此编译失败。这也是线程函数是多为静态函数的原因。

  我们还注意到回调函数用CALLBACK修饰,我们可以在windef.h中发现:

  回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定...博文来自:上帝不掷骰子

  关于静态库和动态库的使用和制作方法。今天我们要搞明白的一个概念叫回调函数。什么是回调函...博文来自:Bruce.yang的嵌入式之旅

  什么是回调开发中经常遇到等待其他模块事件通知的情况,例如:用户点击UI上button的事件,通知给相关函数处理逻辑Model中数据改变的事件,通知给相关View模块刷新界面异步IO完成的事件,通知给处...博文来自:chendongyong的专栏

  回调函数 概念:回调函数,顾名思义,就是使用者自己定义一个函数,使用者自己实现这个函数的程序内容,然后把这个函数作为参数传入别人(或系统)的函数中,由别人(或系统)的函数在运行时来调用的函数。函数是你...博文来自:小蝈蝈的博客

  回调函数是通过函数指针调用的函数:把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,就称为回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时...博文来自:u012043391的专栏

  网友博客:下面引用网友博客的一段,做开头:(有删改)/*---------...博文来自:后起的博客

  回调函数可以看成,让别人做事,传进去的额外信息。比如,A让B做事,可以理解成A函数调用B函数,或者A类使用B类,或者A组件使用B组件等等。反正就是A叫B做事。 当B做这件事情的时候,自身的需要的信息...博文来自:bujiongdan的博客

  前言回调函数在框架中的使用是家常便饭,无论是前台框架还是后台框架,譬如,Jquery的Aajax函数就封装了回调的功能,Spring在整合Hibernate的时候也封装了回调的功能,那为什么要有回调那...博文来自:zhoukun@Fly

  英文名称CallbackFunction概述对于很多初学者来说,往往觉得回调函数很神秘,很想知道回调函数的工作原理。本文将要解释什么是回调函数、它们有什么好处、为什么要使用它们等等问题,在开始...博文来自:工作日志

  CallbackCallback的本质是设置一个函数指针进去,然后在需要触发某个事件时调用该方法,比如Windows的窗口消息处理函数就是这种类型。比如下面的示例代码,我们在Download完成时...博文来自:u011555996的博客

  无论是JS的函数回调还是Java回调机制,它们思想都是类似的,简单来说就是,如下图所示:                 在层次一中的方法一(函数)调用层次二中的方法,而这个被调用的方法又会调用层次一...博文来自:Leeon的博客

  一回调函数我们经常在C++设计时通过使用回调函数可以使有些应用(如定时器事件回调处理、用回调函数记录某操作进度等)变得非常方便和符合逻辑,那么它的内在机制如何呢,怎么定义呢?它和其它函数(比如钩子函数...博文来自:hanxiaoyong_的博客

  一直以来都被回调函数的定义给整蒙了。最近又仔细学了会,感觉回调函数,我认为就是将一个函数指针A作为参数传入另外一个函数B,然后在函数B中调用函数A。   普通回调     具体先看一个简单的例子:  ...博文来自:小胡——uYou的专栏

  回调函数应用实例:1、定义一个Person类(Person.h)文件:注意:在这个类中指定了回调函数,回调函数的执行者,和回调函数指针重要的是 回调函数和回调函数指针是怎么关联的?2、Person类的...博文来自:清新的世界

  1.回调函数基本定义-什么是函数指针通俗来说,函数指针是一个指向特定函数的指针。函数的类型由其参数及返回类型共同决定,与函数具体名称无关。示例代码如下:inttestFun1(intparam1,lo...博文来自:以码会友

  上一节的排序函数只能正向排序,那我们需要反向排序怎么办?可以增加一个参数嘛,传入TRUE,就表示要正向排,传入FALSE,就表示要反向排。要改变排序方向,只需改变两项比较时是用大于号还是小于号即可。但...博文来自:nkmnkm的专栏

  函数指针与回调函数详解1.什么是函数指针?函数指针就是指针。这个指针存放一个函数的地址,而函数的名称就该函数的入口,即地址。这类似于数组名就是数组的首地址。我们可以通过反汇编直观的查看到函数名和函数地...博文来自:men_wen的博客

  软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是...博文来自:Amao_come_on 的专栏

  编程中肯定会遇到在C++中使用回调函数的情况。但是为什么要使用回调函数呢?我们需要理解回调函数设计原理因为可以把调用者与被调用者分开。调用者不关心谁是被调用者,所有它需知道的,只是存在一个具有某种特定...博文来自:好记性不如赖笔头

  简要介绍:ES6中,可以通过promise来处理回调函数,回调函数经常用于异步操作中,间接来说,可以通过promise优化异步操作。1.什么是JS中的回调函数?回调函数是作为参数传递给另外一个函数,并...博文来自:liwusen的博客

  上一篇博文的地址:这节,我们来看看函数指针与回调函数在Linux内核中的应用。从上节我...博文来自:Bruce.yang的嵌入式之旅

  回调函数的作用自己的理解有以下几点:1.回调函数就是由客户自己作主的函数。比如,OnTimer()定时器的回调函数,时间到了,需要做什么,交给客户端自己处理,想添加任何功能都行。回调函数给了客户端自由...博文来自:liulina603的专栏

  什么是回调?通常发生在需要两个角色即调用者与实现者的情形上,即我们希望当产生某个事件时,调用实现者定义的某个函数。当然这个概念很大,不是说操作系统的信号量,条件变量什么的,是在语言级别实现,如一个Fr...博文来自:ec06cumt的专栏

  今天讨论下C/C++中的回调函数。      在理解回调函数之前,首先讨论下函数指针的概念。 函数指针 (1)概念:指针是一个变量,是用来指向内存地址的。一个程序运行时,所有和运行相关...博文来自:飞致科技

  回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定...博文来自:lijunfan_rh的博客

  什么时候使用回调函数?假设有A、B两个类。(1)A类有多种形态,要在B类中实现回调函数。如假设A类是网络请求开源类ASIHttpRequest,它可能请求成功,也可能请求失败。这个时候,B类就要针对以...博文来自:AndYouAndMe的专栏

  C++中类成员函数作为回调函数[转]回调函数是基于C编程的WindowsSDK的技...博文来自:ksn13的专栏

  主要参考windows的做法,这个跟系统没有关系,只要是C++都是一样的参考文章库代码#...博文来自:yifuzhiming的专栏

  回调函数(Callback  Function)什么是回调函数?  回调函数是应用程序提供给Windows系统DLL或其它DLL调用的函数,一般用于截获消息、获取系统信息或处理异步事件。应用程序把回调...博文来自:zhangxin2208的专栏

  (1)Callback方式Callback的本质是设置一个函数指针进去,然后在需要需要触发某个事件时调用该方法,比如Windows的窗口消息处理函数就是这种类型。比如下面的示例代码,我们在Downlo...博文来自:KingW

  C++中的回调函数 ——指向类成员的指针在C中我们能够很容易地实现一个指向函数的指针,因此能够方便地实现函数的回调机制。但是在C++中很多人认为类的成员函数不能作为回调函数,因此很多C程序不能移植到C...博文来自:doufei_JLU_CCST_08

  Admin2010年6月19日偶然间查找其他的知识点时碰到的[转]C/C++中回调函数初探简介对于很多初学者来说,往往觉得回调函数很神秘,很想知道回调函数的工作原理。本文将要解释什么是回调函数、它...博文来自:berry666的专栏

  以前不理解什么叫回调,天天听人家说加一个回调方法啥的,心里想我草,什么叫回调方法啊?然后自己就在网上找啊找啊找,找了很多也不是很明白,现在知道了,所谓回调:就是A类中调用B类中的某个方法C,然后B类中...博文来自:Mobile Internet developer

  在C/C++里面,函数的概念很好理解,就是把某个任务独立出来,封装在一起,然后给它取个名字,它可以有参数和返回值。基本上跟数学里的函数概念一致。那么,回调函数是个什么鬼呢?它和函数到底有何异同?既然已...博文来自:操练起来。。。

  转载于:一、定义某一函数的指针类型:就像自定义数据类型一样,我们也可以先定义一个函数指针类型,然后再...博文来自:打个飞机去美国的博客

  python中有用到回调函数的时候,而回调函数又需要返回数值的时候,就需要先将所被传为回调函数的函数先赋值给一个变量,然后等回调结束之后,将这个变量取值回来就可以了。如我用到到的调用xmlreader...博文来自:daniaokuye的专栏

  返回值简介简单介绍print和return的区别,print仅仅是打印在控制台,而return则是将return后面的部分作为返回值作为函数的输出,可以用变量接走,继续使用该返回值做其它事。函数需要先...博文来自:JetBrains_孙健的博客

  nodejs中的fs模块所提供的接口都是异步操作,当循环中嵌套回调函数时回遇到很多问题如我想实现一个目的:上图是album文件夹下的子目录,我现在想把其中所有的文件夹存入一个数组中去,代码如下:var...博文来自:hhthwx的博客

  1.1用途      闭包在很多语言中都有应用,它在OC中被叫做Blocks,在Java中被叫做Lambda表达式,也有直接叫做匿名函数的。          简单的说闭包就是一种带有局部变量的匿名函...博文来自:Vson的博客

  回调函数是基于C编程的WindowsSDK的技术,不是针对C++的,程序员可以将一个C函数直接作为回调函数,但是如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过。 普通的C+...博文来自:this_CAPSLOCK 的专栏

  从事IT行业的都知道一个开发者的水平基本取决于你做过多少项目,唯有见多才能识广,这次收集的34套Java经典项目主要包括26套Java web项目,6套Java swing项目,2套Java控制台项目...博文来自:明礼馨德的博客

  一、适用场景内存属于稀缺资源,不能随意浪费。如果在一个系统中有很多个完全相同或相似的对象,我们就可以使用享元模式,让他们共享一份内存即可,不必每个都去实例化对象,从而节省内存空间。二、模式核心 享...博文来自:小小本科生成长之路

  一、前言最近由于研究需要,要用到线性判别分析(LDA)。于是找了很多资料来看,结果发现大部分讲的都是理论知识,因此最后还是看的一知半解,后来终于找到了个英文的文档,作者由PCA引入LDA,看过后豁然开...博文来自:jnulzl的专栏

  相信学习编程的同学,或多或少都接触到算法的时间复杂度和空间复杂度了,那我来讲讲怎么计算。        常用的算法的时间复杂度和空间复杂度 一,求解算法的时间复杂度,其具体步骤是: ⑴ 找出算法...博文来自:杨威的博客

  作者fbysss声明:本文由fbysss原创,转载请注明出处关键字:tomcat监控...博文来自:fbysss的专栏

  从trust zone之我见知道,支持trustzone的芯片会跑在两个世界。 普通世界、安全世界,对应高通这边是HLOS,QSEE。 如下图: 如下是HLOS与QSEE的软件架...博文来自:邓永坚的blog

  公司产品之前使用xmpp作为底层库,之前同事编译自己的sdk静态库想生成.a库,但是各种编译问题(其实耐心修改配置都能解决),但是从百度找到方案用framework可以解决,所以最终使用的是frame...博文来自:mingming24的专栏

  本篇文章是根据我的上篇博客,给出的改进版,由于时间有限,仅做了一个简单的优化。相关文章:将excel导入数据库2018年4月1日,新增下载地址链接:点击打开源码下载地址十分抱歉,这个链接地址没有在这篇...博文来自:Lynn_Blog

  偶然间发现各路大牛的一些python创作,不得不说python是一个比较全面的语言,附上网址以后可能需要用到python视觉处理,爬虫数据分析的时候可以用的上吧2333 python小项目: ht...博文来自:王甲评的博客

  docx4j官方提供了一些例子,本文只是其中一部分应用的简单例子。需要注意的地方是页眉和页脚,必须创建对应关系才能起作用。页眉和页脚添加图片的时候,第二个参数sourcePart是必须的,调用的cre...博文来自:偶尔记一下

  扫二维码关注,获取更多技术分享 本文承接之前发布的博客《 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付》必须阅读上篇文章后才可以阅读这篇文章。由于最近一段时间工作比较忙,...博文来自:Marswill

  jquery/js实现一个网页同时调用多个倒计时(最新的) 最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦! //js ...博文来自:Websites

  安装cadence之前对操作系统需要进行一些必要的配置。博文来自:maxwell2ic的博客

  强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量   使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点)   定义: int Ti...博文来自:九野的博客

  一、代理模式为某个对象提供一个代理,从而控制这个代理的访问。代理类和委托类具有共同的父类或父接口,这样在任何使用委托类对象的地方都可以使用代理类对象替代。代理类负责请求的预处理、过滤、将请求分配给委托...博文来自:小小本科生成长之路

  在MATLAB中,可以注释一段程序。 使用“%{”和“%}”。 例如 %{ 。。。 %} 即可。 经典方法是用 if 0,但缺点是不够直观,注释掉的内容仍然保持代码的颜色。现在可以用 ...博文来自:知识小屋

  授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!

  【玩转cocos2d-x之四十】如何在Cocos2d-x 3.0中使用opengl shader?

  【玩转cocos2d-x之三十九】Cocos2d-x 3.0截屏功能集成

  NRatel:既然原作者已经不更新了,我自己写了一个并已开源,支持最新plist的解析。不仅可以裁剪,还支持还原为原图片。

本文链接:http://textandcandy.com/zhengxiangxindao/90.html