【C++】C++11 包装器

慈云数据 6个月前 (05-14) 技术支持 75 0

👀樊梓慕:个人主页

 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C++》《Linux》《算法》

🌝每一个不曾起舞的日子,都是对生命的辜负


目录

前言

function包装器

function包装器概述

function包装器使用

function包装器的实际应用

bind包装器

bind包装器概述

bind包装器使用


前言

我们目前学习过的可调用对象有三种:函数指针、仿函数以及lambda表达式(实际上也是仿函数),但是这三种可调用对象却又有各自的缺点,比如函数指针类型写起来比较复杂,仿函数的类型不统一,而lambda表达式语法层上就没有类型,所以C++11引入了包装器,主要就是为了封装他们,统一类型。


欢迎大家📂收藏📂以便未来做题时可以快速找到思路,巧妙的方法可以事半功倍。 

=========================================================================

GITEE相关代码:🌟樊飞 (fanfei_c) - Gitee.com🌟

=========================================================================


function包装器

function包装器概述

包装器就是对可调用对象的再封装,C++中的function本质上就是一个 『 类模板』。

function类模板的原型如下:

template  function;
template 
class function;

其中Ret是被包装的可调用对象的返回类型,而Args则是被包装的可调用对象的形参类型。

function引入的目的就是为了统一三种可调用对象的类型。

那么我们如何进行包装呢?

function包装器使用

//普通函数
int f(int a, int b)
{
	return a + b;
}
//仿函数对象
struct Functor
{
public:
    //仿函数
	int operator()(int a, int b)
	{
		return a + b;
	}
};
class Plus
{
public:
    //类的静态成员函数
	static int plusi(int a, int b)
	{
		return a + b;
	}
    //类的非静态成员函数
	double plusd(double a, double b)
	{
		return a + b;
	}
};
int main()
{
	//1、包装函数指针(函数名)
	function func1 = f;
	cout 
微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon