std::function 与 std::bind
函数封装与绑定 std::function 与 std::bind
在 stl 标准库中,提供了一些函数包装的模板,它们可以对函数或者可调用的对象进行包装,方便在其他函数中调用
封装 std::function
一个通用的多态函数封装器,它将一个可调用的对象,例如:
- 函数指针
- 函数对象
- Lammbda函数等
进行封装,方便在后续的代码中调用,先看下 function 类模板的定义

函数返回类型:R
函数参数类型:Args

实际的例子:

我们可以将函数 multiply 用 std::function 包装起来

我们还可以使用 std::function 封装类的成员函数、类的成员变量

类型擦除模式(std::function 实现了一种叫做类型擦除的模式)

分别调用了 封装加减乘功能的 3个 function 对象
封装类的成员
对于封装类的成员,可以直接使用 std::mem_fn


绑定 std::bind(是一个函数模板)
它用来生成一个函数调用的转发包装器(也就是一个函数对象),调用这个包装器时,就相当于调用它所包装的函数或者函数对象 f,并使用 args 作为函数的参数

例子:

占位符
_1,_2,_3,......

值传递(当需要将变量绑定作为参数时,需要注意一下)

引用传递(std::cref)



浙公网安备 33010602011771号