std::function 介紹
類模板std::function 是一種通用六剥,多態(tài)的函數(shù)封裝花墩。std::function 的實例可以對任何調(diào)用的目標(biāo)實體進(jìn)行存儲,復(fù)制,和調(diào)用操作霞丧,這些目標(biāo)實體包括普通函數(shù)
,lambda表達(dá)式
冕香,函數(shù)指針
,以及其他函數(shù)對象蛹尝。
std::function
對象是對C++中現(xiàn)有的可調(diào)用實體的一種類型安全的包裹(我們知道像函數(shù)指針這類可調(diào)用實體,是類型不安全的)悉尾。
通過實際的代碼例子突那,演示如何使用std::function
#include<functional>
#include <iostream>
using namespace std;
//function<int(int)> 括號內(nèi)為傳入的參數(shù)個數(shù)及其類型,為空也需要用()不能省略 括號外為返回的參數(shù)類型
std::function<int(int)> Functional;
//普通函數(shù)
int TestFunc(int a)
{
return a;
}
//lamba表達(dá)式
auto lamba = [](int a)->int{return a;};
int main()
{
//普通函數(shù)
Functional = TestFunc;
int result = Functional(10);
cout<<"普通函數(shù)"<<result<<endl;
// Lambda表達(dá)式
Functional = lambda;
result = Functional(20);
cout << "Lambda表達(dá)式:"<< result << endl;
}
std::function
對象最大的用處就是在實現(xiàn)函數(shù)回調(diào)