C++中function的使用
时间: 2024-04-14 22:27:55 浏览: 49
在C++中,function是一个通用的函数封装器,它可以用来存储和调用任意可调用对象,包括函数、函数指针、成员函数和函数对象等。
使用function需要包含头文件<functional>。下面是一个示例:
```cpp
#include <iostream>
#include <functional>
int add(int a, int b) {
return a + b;
}
int main() {
std::function<int(int, int)> func = add;
std::cout << func(3, 4) << std::endl; // 输出结果为7
return 0;
}
```
在上面的示例中,我们定义了一个名为`add`的函数,它接受两个整数参数并返回它们的和。然后,我们声明了一个`std::function`对象`func`,它可以接受两个整数参数并返回一个整数。我们将`add`函数赋值给`func`,然后通过调用`func`来执行加法操作。
除了函数,你还可以将其他可调用对象赋值给`std::function`,例如:
```cpp
#include <iostream>
#include <functional>
struct Functor {
int operator()(int a, int b) const {
return a * b;
}
};
int main() {
std::function<int(int, int)> func1 = [](int a, int b) { return a - b; };
std::function<int(int, int)> func2 = Functor();
std::cout << func1(5, 2) << std::endl; // 输出结果为3
std::cout << func2(5, 2) << std::endl; // 输出结果为10
return 0;
}
```
在这个示例中,我们定义了一个函数对象`Functor`,它可以进行乘法操作。然后,我们声明了两个`std::function`对象`func1`和`func2`,分别赋值为lambda表达式和函数对象`Functor`。通过调用这两个`std::function`对象,我们可以执行减法和乘法操作。
使用`std::function`可以使代码更加灵活,可以将不同类型的可调用对象存储在同一类型的对象中,并通过调用对象来执行相应的操作。
阅读全文