functional 和 bind 用法
使用 functional 和 bind 就可以简单绑定类成员函数参数,且能指定对象。
成员函数必须用 & 来获取地址,非成员就不需要,方便记,就统一加 & 好了。
#include <iostream> #include <functional> using namespace std; using namespace std::placeholders; typedef function<void()> TestCallback; typedef function<void(int)> TestCallback2; class funClass { public: void fun(int a) { cout << a << endl; } }; void notClassNumber(int a) { cout << a << endl; } void TestCall(TestCallback cb) { cb(); } void TestCall2(TestCallback2 cb) { cb(45); } int main() { funClass f; // 调用绑定,成员函数的,就 bind( 函数名,对象指针,args...); TestCallback cb1 = bind(&funClass::fun, &f, 10); TestCall(cb1); // 对于非成员函数的,就 bind( 函数名,args...); TestCallback cb2 = bind(¬ClassNumber, 20); TestCall(cb2); // 对于参数不绑定的 TestCallback2 cb3 = bind(¬ClassNumber, _1); TestCall2(cb3); system("pause"); return 0; }