std::function 函数参数
时间: 2023-08-26 13:13:08 浏览: 65
std::function 是一个函数模板,它可以用来包装任意可调用对象(函数、函数指针、成员函数指针、lambda 表达式等),并且提供了一种通用的方式来传递和存储这些可调用对象。
当使用 std::function 作为函数参数时,你可以灵活地传递不同类型的可调用对象,而不需要在函数签名中声明具体的类型。这对于需要回调函数或者需要在运行时决定具体行为的函数非常有用。
例如,假设有一个函数 `void process(std::function<void()> callback)`,它接受一个无返回值、无参数的可调用对象作为回调函数。你可以传递一个普通函数、lambda 表达式或者成员函数指针作为参数,如下所示:
```cpp
void myCallback() {
// do something
}
class MyClass {
public:
void memberFunction() {
// do something
}
};
int main() {
process(myCallback); // 传递普通函数
process([]() { // 传递 lambda 表达式
// do something
});
MyClass obj;
process(std::bind(&MyClass::memberFunction, &obj)); // 传递成员函数指针
return 0;
}
```
在上面的例子中,`process` 函数接受一个 `std::function<void()>` 类型的参数,它可以接受任何无返回值、无参数的可调用对象。你可以根据实际需求传递不同类型的可调用对象来实现不同的行为。