C++11:std::bind函数
就是让一个函数类似于继承了另一个函数的功能,但是可以保留输入的参数
对于普通函数,参数是函数名(隐性转化为函数地址),可以预留位,也可以直接给定默认参数
func1(int a,intb) auto newfunc1 = bind(func1,_1,_2);
auto newfunc2 = bind(func1,4,_1);
newfunc1(1,2);
newfunc2(3);
对于成员函数,因为需要知道是哪个对象的成员函数,所以参数是函数地址(注意,只能是地址),对象地址,然后才是参数
class A { public: func1(int a,int b); //成员函数 } A a; auto newfunc = bind(&A::func1,&a,_1,_2);
所以可以在构造函数中先添加一个没有对象实例的函数空壳,等类的对象调用构造函数时,令bind实例化一个对象的成员函数