介绍一下std::function
时间: 2023-08-17 21:11:07 浏览: 94
`std::function` 是 C++ 标准库中的一个模板类,用于封装函数对象(Function Object)、函数指针、以及可以调用的(如 lambda 表达式)。它提了一种通用的方式来存储、传递和调用各种类型的可调用对象。
`std::function` 的主要作用是将可调用对象视为一个函数类型,并提供了一组成员函数来操作和调用这个函数对象。它的声明如下:
```cpp
template <typename Signature>
class function;
```
其中 `Signature` 是函数类型的签名,包括返回类型和参数类型。
`std::function` 的使用非常灵活,可以用于存储各种类型的可调用对象,包括函数指针、成员函数指针、函数对象、以及 lambda 表达式等。可以通过以下方式来创建 `std::function` 对象:
```cpp
std::function<int(int)> func; // 声明一个接受 int 类型参数并返回 int 类型的函数对象
// 将一个 lambda 表达式赋值给 func
func = [](int x) { return x * 2; };
// 调用 func
int result = func(5); // 调用 lambda 表达式,得到结果 10
```
`std::function` 还可以作为函数参数或返回值使用,以实现更灵活的函数接口。
总而言之,`std::function` 提供了一种通用的封装方式,使得各种可调用对象可以以统一的方式进行存储、传递和调用,提高了代码的灵活性和可重用性。它在函数回调、事件处理等场景下非常有用。
阅读全文