c++中回调 与函数多态 如果函数名同,有什么区别啊

huadao 2006-02-07 06:09:10
感觉如果函数名同,在C++中回调 与函数多态很像啊,请问区别是什么
啊?谢谢!!
...全文
284 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
晨星 2006-02-08
  • 打赏
  • 举报
回复
回调是一种重要的编程机制,C/C++通过回调函数实现,C++还可以通过functor实现,C#通过delegate实现,Java通过接口实现。
他跟函数的重在和覆盖都没有什么关系。
如果你觉得“回调”的作用只是“可以造成调用不同名字的函数”,那太表面、太肤浅,太舍本逐末了,那远远不是回调的本质。
晨星 2006-02-08
  • 打赏
  • 举报
回复
重载、覆盖和回调都是不同的概念,怎么混到一起去了。
burn3tt 2006-02-08
  • 打赏
  • 举报
回复
回调的作用主要是应用在一种事件的响应机制上的,比如在win32时代的winproc(好像是这个,消息处理函数),它提供了一种动态响应事件的能力,其实就是函数指针,在.NET里叫做委托delegate,在java里叫做监听者,但是java里的机制似乎不太一样,它把回调封装在了一个类里了.撤远了~~~
晨星 2006-02-08
  • 打赏
  • 举报
回复
回调一般是指一个模块中提供一个过程,通过另一个模块的API进行注册,然后由后者负责调用。简言之,前者负责提供函数或子过程,后者负责调用。
举两个最常见最简单的例子:
1。Windows的计时器机制:应用程序的开发者编写一个函数,用来完成一件事情,然后通过Windows系统的API:SetTimer注册到系统中,于是每当用户设置的时间间隔到来时,前面说的那个函数就被系统自动调用执行。这个函数就是回调函数,应用程序员编写(提供)它,而系统负责调用它。

2。图形界面中的事件机制:程序员编写一个函数,用来完成用户按下菜单上某个按钮所进行的动作。程序员编写这个函数的时候并不清楚使用程序的使用者会在什么时候去点击那个按钮,他仅仅知道每当按钮被点击,这个函数就会被执行。这个函数也是回调函数。他由应用程序员提供,而更底层的基于消息驱动的框架程序模块或系统模块负责在用户点击按钮后自动调用他。

回调只是实现某些特殊目的的一种编程机制而已,回调函数本身并没有什么奇特的,它仍然只是个一般的函数。
更严格地讲,“回调函数”这个概念并不是非常清晰,其实C/C++中的main函数由系统在加载应用程序并完成初始化后自动调用,不也是一种回调函数吗?我们通常只负责提供main,并不负责调用main。
huadao 2006-02-08
  • 打赏
  • 举报
回复
嗯,有些明白,回调应该是在C年代出现的吧,不过还是不太清楚当初出现这种类型的函数的目的?难道仅仅像2楼说的,是为了调用不同函数名的函数吗?
huadao 2006-02-08
  • 打赏
  • 举报
回复
up 一下
huadao 2006-02-08
  • 打赏
  • 举报
回复
我觉得我可能是犯了一个概念错误,把一种机制与实现这种机制的方法去比较了。不过,有没有人能给我解释一下回调这种机制的好处和用法呢?谢谢!!!!
吹泡泡的小猫 2006-02-07
  • 打赏
  • 举报
回复
回调函数是静态的,编译器必须在编译的时候确定回调函数的地址,也就是说回调函数必须是全局函数或是class的静态函数,
多态是动态的(运行时确定,相对于编译时确定来说是动态的)
寻开心 2006-02-07
  • 打赏
  • 举报
回复
回调函数是回调函数,多态是多态 他们之间没有相似性

多态函数,是函数名字相同,但是参数不同的情况;程序根据参数类型自动识别用那个函数
回调函数,相当于是定义了一个函数指针,不同的具有相同参数结构的函数都可以赋予这个函数指针,作为回调函数来使用

64,687

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧