std::function和std::bind

  • std::function 用于绑定可调用对象,包含如下类型:
    • lambda表达式
    • 仿函数
    • 静态成员函数
    • 类成员函数指针和类成员指针
  • std::bind可以把参数绑定道可调用对象上面
  • 利用std::bind绑定类成员函数的方法如下:
#include <iostream>
#include <functional>
using namespace std;

class Test
{
public:
    void output(int x, int y)
    {
        cout << "x: " << x << ", y: " << y << endl;
    }
    int m_number = 100;
};

int main(void)
{
    Test t;
    // 绑定类成员函数
    function<void(int, int)> f1 = 
        bind(&Test::output, &t, placeholders::_1, placeholders::_2);
    // 绑定类成员变量(公共)
    function<int&(void)> f2 = bind(&Test::m_number, &t);

    // 调用
    f1(520, 1314);
    f2() = 2333;
    cout << "t.m_number: " << t.m_number << endl;

    return 0;
}