其他分享
首页 > 其他分享> > 为什么我们在C中使用std :: function而不是原始的C函数指针?

为什么我们在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,c11,function-pointers
来源: https://codeday.me/bug/20190925/1817678.html