当前位置: 首页 > news >正文

C++·包装器

目录

function

包装各种可调用对象

包装类成员函数

应用举例

bind

一般形式

arg_list

调整参数顺序

调整参数个数(绑死)

应用举例

小知识


function

包含在<functional>头文件中,是一个类模版,但本质还是仿函数。

std::function的实例对象可以包装存储其他的可以调用对象,包括函数指针、仿函数、lambda、bind表达式等。存储的可调用对象称为它的目标。如果不含目标,则称其为空。

注:1.调用空的std::function 的目标将抛std::bad_function_call异常。

2.返回值类型和参数类型要相同

包装各种可调用对象

对于仿函数FUN,一搬使用struct,而不用class QEQ

包装类成员函数

this指针不能显式传递。

应用举例

map映射string和function

这种方式可拓展性强,并且比较省力。

bind

也包含在<functional>头文件中,是一个函数模版,本质也是仿函数。

是一个可调用对象的包装器,可以看做一个函数适配器,对接收的可调用对象进行处理后返回一个可调用对象。

可以用来调整参数个数和顺序。

一般形式

auto newCallable = bind(callable,arg_list);   

newCallable本身是一个可调用对象,arg_list是一个逗号分隔的参数列表,对应给定的callable的参数。

当调用newCallable时,newCallable会调用callable,并传给它arg_list中的参数。

arg_list

arg_list中的参数可能包含形如_n的名字,n是一个正整数,这些参数作为占位符,表示newCallable的参数,它们占据了传递给newCallable的参数的位置。数值n表示生成的可调用对象中参数的位置:_1为newCallable的第一个参数,_2为第二个,依次向后类推。

注:这些占位符在placeholders的一个命名空间中,使用时要展开。

调整参数顺序

相当于5传给了b,23传给了a。

调整参数个数(绑死)

注意,传常量时,该常量会与指定位置的参数绑死,其他参数再按顺序_1,_2......

应用举例

在使用包装器包装类成员函数时,直接将成员函数对象绑死,就不需要每次都传了,所以bind多用于绑死一些固定参数。

小知识

1..C++11中去除了auto声明自动类型变量的功能,只可以用来进行变量类型推导。

2.auto不能推导函数参数的类型,因为函数在编译时,还没有传递参数,因此在编译时无法推演出形参的实际类型。

相关文章:

  • 新一代达梦官方管理工具SQLark:可视化建表操作指南
  • verilog有符号数的乘法
  • 华为存储考试内容HCIP-Storage
  • RPC 2025/4/8
  • 【QT】 进程
  • 企业级Java开发工具MyEclipse v2025.1——支持AI编码辅助
  • QML面试笔记--UI设计篇01常用控件分类
  • MFC工具栏CToolBar从专家到小白
  • Springboot框架—单元测试操作
  • 【MATLAB例程】基于鲁棒卡尔曼滤波的弹性状态估计与欺骗攻击检测
  • Github 热点项目 ChartDB AI自动导表结构+迁移脚本,3分钟生成专业数据库关系图
  • 【安全】Web渗透测试(全流程)_渗透测试学习流程图
  • NO.77十六届蓝桥杯备战|数据结构-单调队列|质量检测(C++)
  • PG数据库中级证书含金量高吗
  • 鸿蒙NEXT开发资源工具类(ArkTs)
  • PHP+Vue 3实现增删改查(CRUD)
  • 网络安全小知识课堂(十二)
  • Java:学习进阶之路
  • 使用 JSON Schema 实现语言模型的结构化输出:跨平台实践指南
  • git clone(复制)下载
  • 网站首页布局/黄页网站推广效果
  • 西宁高端网站建设/爱站网长尾词挖掘
  • 交做网贷的网站/平台代运营是什么意思
  • 网站的图文链接怎么做的/百度文库登录入口
  • 湖州市南浔区建设局网站/seo网站优化工具大全
  • 网站开发流程有几个阶段/百度经验官网首页