C++中的std::bind是一個非常有用的功能,它允許你將函數或可調用對象與其參數進行綁定,從而創建一個新的可調用對象
#include <iostream>
#include <functional>
void print_sum(int a, int b) {
std::cout << "Sum: " << (a + b) << std::endl;
}
std::bind綁定函數:// 綁定函數print_sum的第一個參數為10
auto bound_print_sum = std::bind(print_sum, 10, std::placeholders::_1);
這里,我們使用std::placeholders::_1作為占位符,表示我們將在調用時提供第二個參數。
// 使用綁定的函數print_sum,傳入第二個參數為20
bound_print_sum(20); // 輸出 "Sum: 30"
這是一個完整的示例:
#include <iostream>
#include <functional>
void print_sum(int a, int b) {
std::cout << "Sum: " << (a + b) << std::endl;
}
int main() {
// 綁定函數print_sum的第一個參數為10
auto bound_print_sum = std::bind(print_sum, 10, std::placeholders::_1);
// 使用綁定的函數print_sum,傳入第二個參數為20
bound_print_sum(20); // 輸出 "Sum: 30"
return 0;
}
注意:在C++11及更高版本中,你還可以使用lambda表達式替代std::bind。例如:
auto bound_print_sum = [](int b) { print_sum(10, b); };
bound_print_sum(20); // 輸出 "Sum: 30"