我是靠谱客的博主 踏实大侠,最近开发中收集的这篇文章主要介绍C++ std::function的使用方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  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的使用方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部