什么时候应该在C ++中使用函数而不是函子?

时间:2017-05-03 22:19:14

标签: c++ c++11

Functors显然更高效,因为编译器更容易内联它们,并且它们在参数化方面工作得更好。什么时候应该使用普通的旧函数而不是函子?

1 个答案:

答案 0 :(得分:15)

函数支持分布式覆盖。函数没有。您必须在其自身内定义Functor的所有重载;您可以在任何地方添加函数的新重载

函数支持ADL(依赖于参数的查找),允许在参数类型关联的命名空间中进行重载。函数没有。

函数指针是一种类型擦除的无状态函子,它是一种POD,正如无状态lambdas如何转换为它所证明的那样。这些功能(POD,无状态,类型擦除)很有用。