为什么函数对象比函数指针好?

Why are function objects better than function pointers?

本文关键字:函数 指针 对象 为什么      更新时间:2023-10-16

from Wikipedia - Function object

函数对象的典型用法是编写回调函数。过程语言中的回调,比如C,可以通过使用函数指针来执行。[2]然而,将状态传入或传出回调函数可能会很困难或尴尬。这个限制还抑制了函数的更多动态行为。函数对象解决了这些问题,因为函数实际上是一个完整对象的伪装,携带自己的状态。
  1. 为什么函数指针使得将状态传入或传出回调函数函数的动态行为变得困难?

  2. 如果函数不使用函数指针,程序如何调用函数

  1. C中的函数指针而言,您需要将状态作为额外参数传递。这与python、javascript或c++等具有闭包的语言相反。这意味着需要考虑额外结构的存储时间。

  2. C程序员确实使用函数指针。如果不使用函数指针,就不能编写非常通用的代码。我们只需应用规则并将捕获的状态作为函数参数传递到结构中。