为什么我们在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);
}
如示例所示,您也不需要完全相同的签名,只要它们是兼容的(即,std :: function的参数类型可以传递给包含的函数/函子).
标签:c,c11,function-pointers 来源: https://codeday.me/bug/20190925/1817678.html