函数指针和仿函数

时间:2011-08-18 02:56:43

标签: c++ functor

函数指针是函子吗?是否有一个虚拟仿函数正在使用,可以帮助兄弟仿函数静默编译?

2 个答案:

答案 0 :(得分:4)

至少这个术语通常用在C ++中(警告:它使用完全相对于其他语言如Haskell不同),仿函数是一个类(或类的实例),重载operator(),因此可以像函数一样调用它。

由于它们使用相同的语法,因此可以编写模板以交替接受指向函数函数实例的指针。然而,并非所有算法都会这样做 - 有些人希望(例如)您为typedefargument_type之类的内容提供result_type s。标准库提供了几个类(unary_functionbinary_function),可用作函数的基类来提供这些类。如果您愿意,您可以自己提供它们 - 这些基类纯粹是为了方便(有些人并不觉得它们特别方便)。

答案 1 :(得分:0)

函数指针是实函数的地址。仿函数是operator()已经过载的类;这些类的实例可以使用与函数相同的语法传递和调用。所以不,函数指针不是函子。

我不知道“虚拟函子”或“兄弟函子”是什么,所以我无法回答你的第二个问题。