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;
}