#include <functional>
bind函数调用形式:auto newCallable = bind(Callable, arg_list);
其中newCallable是一个可调用对象,arg_list是逗号分割的参数列表,对应传给callable的参数。arg_list中的参数有可能含有_n的名字,n是正整数,表示“占位符”,如_1, _2等等。
#include <iostream> using namespace std; void add(int& a, int& b){ ++a; ++b; std::cout << a << ", " << b << std::endl; } void demo1(){ int a1 = 1; int b1 = 2; auto f1 = std::bind(add, a1, b1); f1(); std::cout << a1 << ", " << b1 << std::endl; } void demo2(){ int a1 = 1; int b1 = 2; auto f2 = std::bind(add, a1, std::placeholders::_1); f2(b1); std::cout << a1 << ", " << b1 << std::endl; } int main(){ demo1(); //绑定参数(值传递) cout << " " << endl; demo2(); //未绑定参数(引用传递) /*输出结果 2, 3 1, 2 2, 3 1, 3 */ return 0; }