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

时间:2016-09-07 10:39:16

标签: c++ function-object

来自Wikipedia - Function object

  

函数对象的典型用法是编写回调函数。可以使用函数指针执行过程语言(如C)中的回调。[2]但是,将状态传入或传出回调函数可能很困难或不方便。此限制还会抑制函数的更多动态行为。函数对象解决了这些问题,因为函数实际上是一个完整对象的外观,具有自己的状态。

  1. 为什么函数指针难以将状态传入或传出回调函数函数的动态行为

    < / LI>
  2. 如果函数不使用函数指针程序可以如何调用函数

1 个答案:

答案 0 :(得分:3)

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

  2. C程序员使用函数指针。而且,如果不使用函数指针,就无法编写非常通用的代码。我们只是应用纪律并将结构中捕获的状态作为函数参数传递。