概述
std::function是C函数指针的升级版,使C的面向过程与C++面向对象有了较大的区分,看下面的代码:
/*
std::function的使用
*/
#include <iostream>
#include <functional>
using namespace std;
//声明function变量,参数为返回值为int,形参是int的函数
std::function<int(int)> Func;
int fun1(int a)
{
cout << "我是普通函数" << endl;
return a;
}
// Lambda表达式
auto lambda_fun = [](int i)-> int
{
cout << "我是lambda表达式" << endl;
return i;
};
// 仿函数
class Functor
{
public:
int operator()(int i)
{
cout << "仿函数" << endl;
return i;
}
};
class Test
{
public:
int foo(int i)
{
cout << "类成员函数" << endl;
return i;
}
static int staticFunc(int i)
{
cout << "类静函数" << endl;
return i;
}
};
int main()
{
//给function赋值普通函数
Func = fun1;
cout << Func(1) << endl;
//给function赋值lambda表达式函数
Func = lambda_fun;
cout << Func(2) << endl;
//给function赋值仿函数对象
Functor functor;
Func = functor;
cout << Func(3) << endl;
//给function赋值为类成员函数
Test testObj;
Func = std::bind(&Test::foo, testObj, std::placeholders::_1);
cout << Func(4) << endl;
//给function赋值为类静态函数
Func = Test::staticFunc;
cout << Func(5) << endl;
return 0;
}
function在使用时需要包含头文件
#include <functional>
以及名字空间 std.
function的绑定主要有五种方式:普通函数,lambda表达式函数,仿函数对象,类成员函数,类静态函数。
最后
以上就是踏实大侠为你收集整理的C++ std::function的使用方法的全部内容,希望文章能够帮你解决C++ std::function的使用方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复