bind可以将函数绑定成另一个可调用的函数对象,可以改变原来函数的传参方式。所以可以把bind看成一个函数的适配器。
#include <functional>
#include <iostream>
#include <string>
using namespace std;
int sum(int a, int b, int c)
{
return a + b + c;
}
class A
{
public:
void print(string s)
{
cout << s << endl;
}
static void func()
{
cout << "static func" << endl;
}
int operator()(int a, int b) const {
return a + b;
}
};
int main()
{
// 绑定普通函数
auto sum2 = bind(sum, 100, placeholders::_1, placeholders::_2);
cout << sum2(2,3) << endl;
// 绑定类成员函数
A a;
auto print2 = bind(&A::print, a, placeholders::_1);
print2("good");
// 绑定类静态函数
auto func = bind(&A::func);
func();
// 绑定重载operator函数
auto opr = bind(&A::operator(), a, 1, 2);
cout << opr() << endl;
getchar();
return 0;
}