std::function 举例子
时间: 2023-07-07 19:42:37 浏览: 82
C++11中lambda、std::function和std:bind详解
5星 · 资源好评率100%
以下是一个使用std::function的示例:
```c++
#include <iostream>
#include <functional>
void foo(int x) {
std::cout << "foo(" << x << ")" << std::endl;
}
class Bar {
public:
void operator()(int x) const {
std::cout << "Bar(" << x << ")" << std::endl;
}
};
void callFunc(std::function<void(int)> func) {
func(42);
}
int main() {
std::function<void(int)> func;
// 将函数指针赋值给std::function对象
func = &foo;
func(10);
// 将函数对象赋值给std::function对象
Bar bar;
func = bar;
func(20);
// 将Lambda表达式赋值给std::function对象
func = [](int x) {
std::cout << "Lambda(" << x << ")" << std::endl;
};
func(30);
// 将std::bind绑定的函数对象赋值给std::function对象
auto boundFunc = std::bind(foo, std::placeholders::_1);
func = boundFunc;
func(40);
// 将std::function对象作为参数传递给其他函数
callFunc(func);
return 0;
}
```
输出结果为:
```
foo(10)
Bar(20)
Lambda(30)
foo(40)
foo(42)
```
可以看到,std::function可以封装不同类型的可调用对象,并且可以像函数指针一样进行赋值、调用和传递。
阅读全文