std::function<void()>是C++11的新特性——可调用对象模板类。
std::function<void()>代表一个可调用对象,接收0个参数,返回void。
std::function可以绑定到全局函数和静态函数,如果要绑定到类的非静态成员函数,则需要使用std::bind。
#include <iostream>
#include <functional>
using namespace std;
typedef std::function<void()> fun_p;
void add()
{
cout<<"add"<<endl;
}
class st
{
public:
static void st_static()
{
cout<<"st_static"<<endl;
}
void fun()
{
cout<<"fun"<<endl;
}
void int_st(int val)
{
cout<<"int_st"<<val<<endl;
}
void use_bind()
{
fun_p fun_p_one = std::bind(&st::fun,this);
fun_p_one();
}
void use_bind2()
{
fun_p fun_p_two = std::bind(&st::int_st,this,10);
fun_p_two();
}
};
int main(int argc, char *argv[])
{
fun_p f2 = fun_p(&add);
f2();
fun_p f3 = fun_p(&st::st_static); //bind static function
f3();
st().use_bind();
st().use_bind2();
return 0;
}