您的位置:首页 > 编程语言 > C语言/C++

C++ 11 std::function std::bind使用

2015-02-04 19:19 615 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++11