std::bind
是 C++11 引入的一個功能強大的函數模板,它可以用于綁定函數(包括成員函數和非成員函數)的參數。但是,當用于非成員函數時,需要使用 std::placeholders
來表示占位符,以便在調用綁定的函數時傳遞參數。
下面是一個使用 std::bind
和非成員函數的例子:
#include <iostream>
#include <functional>
// 非成員函數
void print_sum(int a, int b) {
std::cout << "Sum: " << a + b << std::endl;
}
int main() {
// 使用 std::placeholders 創建占位符
std::placeholders::_1 表示第一個參數,std::placeholders::_2 表示第二個參數
// 使用 std::bind 綁定非成員函數和參數
auto bound_print_sum = std::bind(print_sum, std::placeholders::_1, std::placeholders::_2);
// 調用綁定的非成員函數
int x = 3;
int y = 4;
bound_print_sum(x, y); // 輸出 "Sum: 7"
return 0;
}
在這個例子中,我們使用 std::bind
將非成員函數 print_sum
綁定到參數 x
和 y
,然后調用綁定的函數。注意,我們使用了 std::placeholders
來表示占位符。