+-
为什么我们在C中使用std :: function而不是原始的C函数指针?
参见英文答案 > Should I use std::function or a function pointer in C++?                                    5个
std :: function< T1(T2)>的优点是什么?超过原来的T1(*)(T2)?
最佳答案
std :: function可以容纳多个函数指针,即函子.

#include <functional>

void foo(double){}

struct foo_functor{
  void operator()(float) const{}
};

int main(){
  std::function<void(int)> f1(foo), f2((foo_functor()));
  f1(5);
  f2(6);
}

Live example on Ideone.

如示例所示,您也不需要完全相同的签名,只要它们是兼容的(即,std :: function的参数类型可以传递给包含的函数/函子).

点击查看更多相关文章

转载注明原文:为什么我们在C中使用std :: function而不是原始的C函数指针? - 乐贴网