std::function<void()> func;
定义了一个 std::function
对象,该对象可以包装任何可调用对象(函数、函数指针、lambda 表达式等),并且该可调用对象没有参数并返回 void
。
具体的解释:
std::function
: 是 C++11 引入的一个模板类,属于<functional>
头文件。它是一个通用的函数封装类,可以包装和存储任何可调用对象。void()
: 这是std::function
模板的模板参数。它表示被封装的可调用对象没有参数(void
)并且返回void
。func
: 这是我们创建的std::function
对象的名称。我们可以使用func
来存储和调用各种不同类型的可调用对象。-
#include <iostream> #include <functional> void simpleFunction() { std::cout << "This is a simple function." << std::endl; } int main() { // 将一个普通函数绑定到 std::function 对象 std::function<void()> func = &simpleFunction; // 调用 std::function 包装的函数 func(); return 0; }
在这个例子中,我们将一个普通函数
simpleFunction
绑定到std::function<void()>
对象func
上,然后通过func()
调用这个函数。std::function
提供了一种在运行时动态选择要调用的函数的方法,使得代码更加灵活。
基本使用
- 头文件:
#include <functional>
- 语法:
std::function<return_type(args_type)>
#include <iostream>
#include <functional>
using namespace std;
void func(int i, int g) {
int count = 10;
while (count > 0) {
cout << "func: " << i << " " << g<< endl;
sleep(1);
}
}
int main() {
std::function<void(int,int)> job = func;
job(10,10);
return 0;
}
其中return_type 是函数指针的返回值类型,像上面案例中func
函数的void
类型。
其中args_type 是函数指针的参数类型,有多个函数参数,就可以有多个数据类型。