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;
}