std::function

通过使用std::function,可以将不同类型的可调用对象封装成统一的格式,从而使用相同的接口进行调用;在设计回掉函数、事件处理 、函数对象等场景中十分有用。

① 封装函数指针

② 封装lambda

③ 封装成员函数等

1. 包含头文件

#include

2. 声明一个对象,返回类型(参数类型)

std::function myfunc;

3. 封装不同内容

3.1 封装函数指针

int func1(int x) return x * 2;

std::function myfunc = func1;   封装函数指针

int result = myfunc(2)                             调用封装的函数指针

3.2 封装lambda表达式

std::function myfunc = [ ](int x ) {return x * 2};

int result = myfunc(5);

3.3 封装成员函数

class A

{

public:

        int a_func(int x) {return x * 2}

};

A a;

std::function myfunc = &A::a_func;

int result = myfunc(5);

4. 作为函数参数

void do_something(std::function myfunc) {

        int result = myfunc(5);

}

int func1(int x) {return x * 2};

do_something(func1)

 

你可能感兴趣的:(C++11,c++)