c++ 中新增的function
时间: 2024-04-11 20:25:56 浏览: 15
在C++11标准中,引入了`std::function`类模板,它是一个通用的函数包装器,可以用于封装各种可调用对象(函数指针、函数对象、Lambda表达式等)。`std::function`提供了一种类型安全的方式来存储和调用各种不同类型的可调用对象。
使用`std::function`,你可以将可调用对象存储为一个类型安全的变量,并在需要时进行调用。下面是`std::function`的基本用法示例:
```cpp
#include <iostream>
#include <functional>
int add(int a, int b) {
return a + b;
}
int main() {
std::function<int(int, int)> func = add;
int result = func(3, 4);
std::cout << result << std::endl; // 输出: 7
func = [](int a, int b) {
return a * b;
};
result = func(3, 4);
std::cout << result << std::endl; // 输出: 12
return 0;
}
```
在上面的示例中,我们首先将一个普通函数`add`赋值给`std::function`对象`func`,然后通过`func(3, 4)`调用该函数,并将结果输出。接着,我们将一个Lambda表达式赋值给`func`,并再次通过`func(3, 4)`调用该Lambda表达式,并输出结果。
使用`std::function`可以实现函数回调、函数参数传递等更灵活的编程模式,它是C++中一种重要的函数封装工具。