【发布时间】:2016-09-07 10:39:16
【问题描述】:
函数对象的典型用途是编写回调函数。可以通过使用函数指针来执行过程语言(例如 C)中的回调。 [2]然而,将状态传入或传出回调函数可能很困难或尴尬。这种限制也抑制了函数的更多动态行为。函数对象解决了这些问题,因为函数实际上是完整对象的外观,带有自己的状态。
-
为什么函数指针难以将状态传入或传出回调函数和函数的动态行为?
如果函数不使用函数指针,程序如何调用函数
【问题讨论】:
-
继续阅读你的 C++ 书籍。当您了解 lambdas 和 lambda 捕获时,都会进行解释。
-
请澄清:“如果函数不使用函数指针,程序如何调用函数”——糟糕的语法让你很难理解你在问什么。人们可以修正语法,但首先他们需要知道你真正要问的是什么。
-
只调用使用变量的函数指针可能会很棘手,因为变量在执行函数时可能会发生变化。为了解决这个问题,函数对象将正在使用的变量的状态复制到它自己的对象中。
-
一般来说这是一个有趣的问题。但是你的语法让人难以阅读。并且如前所述,当您进一步了解 C++ 时,您会偶然发现函数对象。
-
@IvanRubinson 在引用其他网站时,指出cross-posting is frowned upon 通常会有所帮助
标签: c++ function-object