c++std::bind
时间: 2024-03-04 09:47:27 浏览: 87
C++中的std::bind是一个函数模板,用于创建一个可调用对象(函数对象或成员函数指针),并绑定其参数。它可以将一个函数或成员函数与一组参数绑定在一起,形成一个新的可调用对象。
std::bind的基本语法如下:
```cpp
std::bind(Function, args...)
```
其中,Function是要绑定的函数或成员函数指针,args是要绑定的参数。
使用std::bind可以实现以下功能:
1. 绑定普通函数的部分参数,生成一个新的可调用对象。
2. 绑定成员函数的对象指针和部分参数,生成一个新的可调用对象。
3. 绑定成员函数的对象引用和部分参数,生成一个新的可调用对象。
下面是一些示例:
1. 绑定普通函数的部分参数:
```cpp
#include <iostream>
#include <functional>
void printSum(int a, int b) {
std::cout << "Sum: " << a + b << std::endl;
}
int main() {
auto printSumWith5 = std::bind(printSum, 5, std::placeholders::_1);
printSumWith5(10); // 输出:Sum: 15
return 0;
}
```
2. 绑定成员函数的对象指针和部分参数:
```cpp
#include <iostream>
#include <functional>
class MyClass {
public:
void printProduct(int a, int b) {
std::cout << "Product: " << a * b << std::endl;
}
};
int main() {
MyClass obj;
auto printProductWith2 = std::bind(&MyClass::printProduct, &obj, std::placeholders::_1);
printProductWith2(5); // 输出:Product: 10
return 0;
}
```
3. 绑定成员函数的对象引用和部分参数:
```cpp
#include <iostream>
#include <functional>
class MyClass {
public:
void printDifference(int a, int b) {
std::cout << "Difference: " << a - b << std::endl;
}
};
int main() {
MyClass obj;
auto printDifferenceWith3 = std::bind(&MyClass::printDifference, std::ref(obj), std::placeholders::_1);
printDifferenceWith3(7); // 输出:Difference: 4
return 0;
}
```
阅读全文