std::function 详解
时间: 2023-10-22 17:10:47 浏览: 94
理解C++编程中的std::function函数封装
std::function 是 C++11 中的一个函数对象封装类,可以用来存储、复制、调用任何可调用对象(函数、函数指针、成员函数指针、lambda 表达式等)。它的定义如下:
```c++
template<class R, class... Args>
class function<R(Args...)>;
```
其中,R 表示返回值类型,Args... 表示参数类型列表。使用时,需要先定义一个 std::function 对象,然后将可调用对象赋值给它,例如:
```c++
#include <iostream>
#include <functional>
int add(int a, int b) {
return a + b;
}
int main() {
std::function<int(int, int)> f = add;
std::cout << f(1, 2) << std::endl; // 输出 3
return 0;
}
```
在上面的例子中,我们定义了一个 std::function 对象 f,它的参数类型是 int 和 int,返回值类型也是 int。然后将 add 函数赋值给它,并调用 f(1, 2) 输出结果。
需要注意的是,std::function 对象可以为空,即未绑定任何可调用对象。此时调用它会抛出 std::bad_function_call 异常。可以通过 std::function 的成员函数 empty() 来判断一个 std::function 对象是否为空。
阅读全文