#include <iostream>
#include <string>
#include <functional>
using namespace std;
using namespace std::placeholders;
void test(int i, double d, const string &s)
{
cout << "i = " << i << " d = " << d << " s = " << s << endl;
}
int test1(int i, double d, const string &s)
{
cout << "i =" << i << " d=" << d << " s =" << s << endl;
return 1;
}
void main()
{
function<void(void) > fp;
string s = "foo";
int a = 3;
double b = 6.7;
fp = bind(&test, a, b, s);
fp();
function<void(int, const string &)>fp1;
double b2 = 4.6;
//_1表示这个位置是新的可调用对象的第一个参数的位置
//_2表示这个位置是新的可调用对象的第二个参数的位置
fp1 = bind(test, _1, b2, _2);
fp1(4, "kity");
function<int(int, const string &)>fp2;
fp2 = bind<int>(test1, _1, b2, _2);
int y = fp2(10, "ssssssss");
cout << y << endl;
auto fn = bind(test, 10, 23.3, "haha");
fn();
auto f1 = bind(test, _1, _3, _2);
f1(10, "ss", 10.2);
class A
{
public:
void print(int a, double x)
{
cout << a << " " << x << endl;
}
};
A a3;
//类成员函数需要绑定该类的this指针
auto fA = bind(&A::print, &a3, _2, _1);
fA(1.3,10);
getchar();
}
C++ 11 Bind函数用法
最新推荐文章于 2024-05-13 00:20:27 发布