背景
①.可调用对象
对于一个对象或者一个表达式,如果可以对其使用调用运算符,则称为可调用对象。
②.调用形式
一种调用形式对应了一个函数类型,指明了调用返回类型以及传递的参数类型,比如:int (int,int)
std::bind
①.概念
可将 bind 函数看作是一个通用的函数适配器,它接受一个可调用对象,生成一个新的可调用对象来适应源对象的参数列表。
调用 bind 的一般形式:auto newCallable = bind(callable,arg_list);当我们调用 newCallable 时,newCallable 会调用 callable ,并传给它 arg_list 中的参数。
②.占位符
arg_list 中的参数可能包含形如 _n 的名字,这些参数是“占位符”,表示 newCallable 的参数。数值 n表示生成的可调用对象中参数的位置:_1 为 newCallable的第一个参数,_2 为第二个参数,以此类推。
③.头文件
标准库函数 bind 定义在头文件 functional 中,并且使用时需要 using namespace std::placeholders。
应用举例
①.参数绑定
通过参数绑定可以更改可调用对象的实际需要外部传递的参数数量。
②.重排参数顺序
通过 bind 可以重排传递的参数顺序。
③.bind 与成员函数指针
还可以使用 bind 从成员函数生成一个可调用对象,第一个参数也必须显示指定可作用对象;传入的可作用对象可以是指针也可以是引用。