#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();
}