#include<iostream>
#include<iostream>
#include<functional>
using namespace std;
using namespace std::placeholders;
//仿函数 创建一个结构体或类的内部函数的函数指针
struct MyStruct
{
void add( int a){
cout << a << endl;
}
void add2( int a, int b){
cout << a << " ";
cout << b << endl;
}
void add3( int a, int b, int c){
cout << a << " ";
cout << b << " ";
cout << c << endl;
}
};
void main(){
MyStruct ms;
//func是一个函数指针
//_1表示add方法只有一个参数,它只表示一个占位
//&MyStruct::add 是取出add在代码区的地址
//取出add方法后,必须把它放到一个ms实体上执行
//auto 自动变量
//第一个参数引用一个内部函数,第二个绑定一个实体对象,第三个表示占位
auto func = bind(& MyStruct::add, &ms, _1);
auto func2 = bind(& MyStruct::add2, &ms, _1, _2);
auto func3 = bind(& MyStruct::add3, &ms, _1, _2, _3);
func(100);
func2(22, 98);
func3(25, 38, 222);
cin.get();
}