标签:class 回调函数 code 引用类型 c++ ++ 成员函数 cout name
#include <iostream> #include <functional> using namespace std; int func(int a, int b) { return a + b; } class foo { public: int func(int a, int b) { return a + b; } }; int main() { auto bf1 = std::bind(func, 10, std::placeholders::_1); cout<<bf1(20)<<endl; foo f; auto bf2 = std::bind(&foo::func, f, std::placeholders::_1, std::placeholders::_2); cout<<bf2(100, 50)<<endl; std::function<int (int)> bf3 = std::bind(&foo::func, f, std::placeholders::_1, 100); cout<<bf3(100)<<endl; return 0; }
bind是这样一种机制,它可以预先把指定可调用实体的某些参数绑定到已有的变量,产生一个新的可调用实体,这种机制在回调函数的使用过程中也颇为有用。
例子中:bf1是把一个两个参数普通函数的第一个参数绑定为10,生成了一个新的一个参数的可调用实体体; bf2是把一个类成员函数绑定了类对象,生成了一个像普通函数一样的新的可调用实体; bf3是把类成员函数绑定了类对象和第二个参数,生成了一个新的std::function对象。看懂了上面的例子,下面我们来说说使用bind需要注意的一些事项:
标签:class 回调函数 code 引用类型 c++ ++ 成员函数 cout name
原文地址:http://www.cnblogs.com/kex1n/p/7072134.html