std::function 介绍
类模板std::function 是一种通用,多态的函数封装。std::function 的实例可以对任何调用的目标实体进行存储,复制,和调用操作,这些目标实体包括普通函数
,lambda表达式
,函数指针
,以及其他函数对象。
std::function
对象是对C++中现有的可调用实体的一种类型安全的包裹(我们知道像函数指针这类可调用实体,是类型不安全的)。
通过实际的代码例子,演示如何使用std::function
#include<functional>
#include <iostream>
using namespace std;
//function<int(int)> 括号内为传入的参数个数及其类型,为空也需要用()不能省略 括号外为返回的参数类型
std::function<int(int)> Functional;
//普通函数
int TestFunc(int a)
{
return a;
}
//lamba表达式
auto lamba = [](int a)->int{return a;};
int main()
{
//普通函数
Functional = TestFunc;
int result = Functional(10);
cout<<"普通函数"<<result<<endl;
// Lambda表达式
Functional = lambda;
result = Functional(20);
cout << "Lambda表达式:"<< result << endl;
}
std::function
对象最大的用处就是在实现函数回调