std::function 传递函数指针
时间: 2024-09-18 09:12:36 浏览: 27
理解C++编程中的std::function函数封装
`std::function`是C++标准库中的一个模板类,它提供了一种通用的方式来存储和传递函数对象。它可以接受任何可调用的对象(如普通函数、成员函数、lambda表达式甚至是其他类型的functor),从而使代码对多种类型的函数处理变得更加方便。
当你需要将一个函数作为参数传递给另一个函数,或者保存在一个容器里以便稍后使用,但不确定这个函数的具体类型时,`std::function`就非常有用。例如:
```cpp
void print(int x) {
std::cout << "Printed an integer: " << x << std::endl;
}
void useFunction(std::function<void(int)> func) {
func(42); // 这里func可以是print或其他满足int -> void的函数
}
int main() {
useFunction(print); // 直接传入print函数
return 0;
}
```
在这个例子中,`useFunction`函数接受一个`std::function<int(void)>`类型的参数,也就是说它可以接收任何接受一个整数并返回无值的函数。当我们调用`useFunction(print)`时,实际上就是调用了`print`函数。
阅读全文