std::function
是C++标准库中的一个模板类,用于封装可调用对象(函数、函数指针、函数对象、Lambda表达式等)。它提供了一种通用的方式来存储和调用这些可调用对象,类似于函数指针的概念,但更加灵活和安全。
std::function
的用法如下:
- 定义一个
std::function
对象:std::function<返回类型(参数类型)> func;
- 将可调用对象赋值给
std::function
对象:func = 可调用对象;
- 调用
std::function
对象:func(参数);
下面是一个简单的示例,演示了std::function
的用法:
#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: " << result << std::endl;
return 0;
}
在上面的示例中,我们定义了一个std::function
对象func
,它接受两个int
类型的参数并返回一个int
类型的结果。我们将add
函数赋值给func
,然后通过func
调用add
函数,得到结果7。
除了函数,您还可以将其他可调用对象(如Lambda表达式、函数对象等)赋值给std::function
对象,并以相同的方式进行调用。
总而言之,std::function
提供了一种方便的方法来存储和调用可调用对象,使得在运行时动态确定调用的函数或函数对象成为可能。它是C++中函数对象和函数指针的一种通用封装,可以大大增强程序的灵活性。