#include <functional>
#include <iostream>
using namespace std;
std::function<int(int)> Functional;
int TestFunc(int a )
{
return a;
}
//lambda expression
auto lambda = [](int a)->int{return a ; };
//fang func
class Functor
{
public:
int operator()(int a)//重载()运算符
{
return a;
}
int x(int a)
{
return a * 2;
}
};
class TestClass
{
public:
int classMember(int a ){ return a;}
static int StaticMember(int a)
{
return a;
}
};
int main()
{
//normal method
Functional = TestFunc; //like function pointer
int result = Functional(10);
cout<<"usual func : "<< result<<endl;
//lambda
Functional = lambda;
result = Functional(20); //
cout<<"Lambda:"<< result<<endl;
// fang func
Functor testFunctor;
Functional = testFunctor;
result = Functional(30);
cout<<"fang func:"<< result<<endl;
//
TestClass testObj;
//std::function可以绑定到全局函数/类静态成员函数(类静态成员函数与全局函数没有区别),如果要绑定到类的非静态成员函数,则需要使用std::bind
Functional = std::bind( &TestClass::classMember, testObj,std::placeholders::_1);
result = Functional(40);
cout<<"类成员函数:"<< result<<endl;
//类静态函数
Functional = TestClass::StaticMember;
result = Functional(50);
cout<<"类静态函数:"<< result<<endl;
getchar();
return 0;
}
std::function 使用
最新推荐文章于 2023-09-09 10:41:23 发布