std::function和std::bind联用实例
时间: 2023-09-22 08:11:15 浏览: 119
C++11中lambda、std::function和std:bind详解
5星 · 资源好评率100%
当使用C++11的`std::function`和`std::bind`联用时,可以实现灵活的函数绑定和回调。下面是一个简单的示例:
```cpp
#include <iostream>
#include <functional>
// 要绑定的函数
void foo(int a, int b) {
std::cout << "foo: " << a << ", " << b << std::endl;
}
int main() {
// 使用std::bind将参数绑定到函数
auto bindFoo = std::bind(foo, 42, std::placeholders::_1);
// 使用std::function保存绑定后的函数对象
std::function<void(int)> func = bindFoo;
// 调用回调函数
func(10);
return 0;
}
```
在这个例子中,我们定义了一个名为`foo`的函数,它接受两个整数参数。然后,我们使用`std::bind`将其中一个参数绑定为固定值,得到了一个新的函数对象`bindFoo`。接下来,我们使用`std::function`声明了一个函数对象`func`,它接受一个整数参数并调用`bindFoo`。最后,我们通过调用`func(10)`来触发回调,实际上调用了绑定后的`foo(42, 10)`函数。
这样,我们就可以在使用`std::function`和`std::bind`联用时实现函数的灵活绑定和回调。
阅读全文