std::bind是C++標準庫中的一個函數模板,用于綁定函數的參數,并返回一個可調用對象(函數對象、函數指針或成員函數指針)。
std::bind的函數簽名為: template< class F, class… Args > unspecified bind( F&& f, Args&&… args );
其中,F表示要綁定的函數、函數指針或成員函數指針,Args表示要綁定的參數。
std::bind的作用是將函數的參數進行綁定,生成一個新的可調用對象,這個對象可以延遲調用原函數,并在調用時傳入綁定的參數。通過std::bind可以實現參數的部分綁定、函數對象的適配和函數參數的重排序等功能。
使用std::bind時,需要包含頭文件
#include
void foo(int a, int b) { std::cout << a << " + " << b << " = " << a + b << std::endl; }
int main() { auto bindFunc = std::bind(foo, std::placeholders::_1, 2); // 綁定foo函數的第一個參數為占位符_1,第二個參數為2 bindFunc(3); // 調用bindFunc,實際上會調用foo(3, 2)
return 0;
}
以上代碼中,使用std::bind將函數foo的第一個參數綁定為占位符_1,將第二個參數綁定為2,并生成一個新的可調用對象bindFunc。當調用bindFunc時,實際上會調用foo(3, 2),輸出結果為"3 + 2 = 5"。