std::function和std::bind结合使用
时间: 2024-05-19 16:09:31 浏览: 128
C++ 11 std::function和std::bind使用详解
std::function是一个通用的函数封装类,它可以用来存储任何可调用对象(函数、函数指针、成员函数、仿函数等),并且可以在需要时执行这些可调用对象。std::bind则是一个函数适配器,它可以将一个可调用对象(函数、函数指针、成员函数、仿函数等)和一些参数绑定起来,形成一个新的可调用对象。
std::function和std::bind可以结合使用,通过std::bind将一个可调用对象和一些参数绑定起来,然后将绑定后的可调用对象存储到std::function对象中。当需要调用该可调用对象时,只需要调用std::function对象即可。
以下是std::function和std::bind结合使用的示例代码:
```
#include <iostream>
#include <functional>
void foo(int a, int b, int c) {
std::cout << "a + b + c = " << a + b + c << std::endl;
}
class Bar {
public:
void bar(int a, int b, int c) {
std::cout << "a * b * c = " << a * b * c << std::endl;
}
};
int main() {
std::function<void()> f1 = std::bind(foo, 1, 2, 3);
f1(); // 输出:a + b + c = 6
Bar bar;
std::function<void()> f2 = std::bind(&Bar::bar, &bar, 4, 5, 6);
f2(); // 输出:a * b * c = 120
return 0;
}
```
阅读全文