函数指针是函子吗?是否有一个虚拟仿函数正在使用,可以帮助兄弟仿函数静默编译?
答案 0 :(得分:4)
至少这个术语通常用在C ++中(警告:它使用完全相对于其他语言如Haskell不同),仿函数是一个类(或类的实例),重载operator()
,因此可以像函数一样调用它。
由于它们使用相同的语法,因此可以编写模板以交替接受指向函数或函数实例的指针。然而,并非所有算法都会这样做 - 有些人希望(例如)您为typedef
和argument_type
之类的内容提供result_type
s。标准库提供了几个类(unary_function
和binary_function
),可用作函数的基类来提供这些类。如果您愿意,您可以自己提供它们 - 这些基类纯粹是为了方便(有些人并不觉得它们特别方便)。
答案 1 :(得分:0)
函数指针是实函数的地址。仿函数是operator()
已经过载的类;这些类的实例可以使用与函数相同的语法传递和调用。所以不,函数指针不是函子。
我不知道“虚拟函子”或“兄弟函子”是什么,所以我无法回答你的第二个问题。