c++仿函数调用方式
仿函数的主要功能是为了搭配STL算法使用,单独使用仿函数的情况比较少。
仿函数(functors)在C++标准中采用的名称是函数对象(function objects)。仿函数主要用于STL中的算法中,虽然函数指针虽然也可以作为算法的参数,但是函数指针不能满足STL对抽象性的要求,也不能满足软件积木的要求–函数指针无法和STL其他组件搭配,产生更灵活变化。仿函数本质就是类重载了一个operator(),创建一个行为类似函数的对象。
对于重载了()操作符的类,可以实现类似函数调用的过程,所以叫做仿函数,实际上仿函数对象仅仅占用1字节,因为内部没有数据成员,仅仅是一个重载的方法而已。实际上可以通过传递函数指针实现类似的功能,但是为了和STL内部配合使用,他提供了仿函数的特性。
调用方式见代码:
struct MyPlus{int operator()(const int &a , const int &b) const{return a + b;}
};int main()
{MyPlus a;cout << MyPlus()(1,2) << endl;//1、通过产生临时对象调用重载运算符cout << a.operator()(1,2) << endl;//2、通过对象显示调用重载运算符cout << a(1,2) << endl;//3、通过对象类似函数调用 隐示地调用重载运算符return 0;
}
运行结果:
c++仿函数调用方式相关推荐
- 2021年大数据常用语言Scala(十二):基础语法学习 方法调用方式
目录 方法调用方式 后缀调用法 中缀调用法 操作符即方法 花括号调用法 无括号调用法 方法调用方式 在scala中,有以下几种方法调用方式, 后缀调用法 中缀调用法 花括号调用法 无括号调用法 在后续 ...
- Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式…)介绍(转)
[-] 一普通同步方式 二事务方式Transactions 三管道Pipelining 四管道中调用事务 五分布式直连同步调用 六分布式直连异步调用 七分布式连接池同步调用 八分布式连接池异步调用 九 ...
- Winform开发框架的业务对象统一调用方式
在这个纷繁的社会里面,统一性的特点能够带来很多高效的产出.牢固的记忆,这种特征无论对于企业.个人的开发工作,知识的传承都有着非常重要的作用,Winfrom框架本身就是基于这个理念而生,从统一的数据库设 ...
- Vue组件的三种调用方式
最近在写fj-service-system的时候,遇到了一些问题.那就是我有些组件,比如Dialog.Message这样的组件,是引入三方组件库,比如element-ui这样的,还是自己实现一个?虽然 ...
- 提交响应后无法调用sendredirect_微服务的那些事(三),微服务的远程调用方式。RPC和HTTP...
2.远程调用方式 无论是微服务还是SOA,都面临着服务间的远程调用.那么服务间的远程调用方式有哪些呢? 常见的远程调用方式有以下几种: RPC:Remote Produce Call远程过程调用,类似 ...
- jS四种函数的调用方式
6- js 函数的四种调用方式 2016年11月04日 13:41:54 阅读数:7559 函数的四种调用方式 函数有下列调用模式 函数调用模式 方法调用模式 构造器模式 上下文模式 函数调用 模式 ...
- vue 实例化几种方式_Vue组件的三种调用方式
最近在写fj-service-system的时候,遇到了一些问题.那就是我有些组件,比如Dialog.Message这样的组件,是引入三方组件库,比如element-ui这样的,还是自己实现一个?虽然 ...
- Javascript中匿名函数的多种调用方式
avascript中定义函数的方式有多种,函数直接量就是其中一种.如var fun = function(){},这里function如果不赋值给fun那么它就是一个匿名函数.好,看看匿名函数的如何被 ...
- 【Kotlin】Lambda 表达式 ( 简介 | 表达式语法 | 表达式类型 | 表达式返回值 | 调用方式 | 完整示例 )
文章目录 I . Lambda 表达式 简介 II . Lambda 表达式语法 III . Lambda 表达式类型 IV . Lambda 表达式返回值 V . Lambda 表达式调用 VI . ...
最新文章
- 我的python学习笔记
- 荐读:五月最值得阅读的15篇人工智能文章
- 关于时间类型数据的转换
- 初探 Headless Chrome
- Python内置函数min(iterable, *[, key, default])
- 【直播回看】「EDGE X Kubernetes · 云原生在边缘的实践与应用」
- 休眠事实:有利于双向集vs列表
- android二级联动购物车,Android实现二级购物车的全选加反选、总价功能
- JedisConnectionException: java.Net.SocketTimeoutException: Read timed
- 不做冤大头!大数据“杀熟”最高罚5000万!
- Linux企业级项目实践之网络爬虫(29)——遵守robots.txt
- 【转载】三角形测试用例
- 度数换算_度数换算计算器
- 18.ARP报文格式详解
- GDC API下载肿瘤数据
- JavaSE——IO流
- PCB板元器件视觉检测系统解决方案
- 使用cmd安装python的matplotlib库
- 计算机未来发展报告,2020-2026年中国电子计算机行业发展深度调研与未来趋势报告...
- m2e-wtp error: path/target/m2e-wtp/web-resources/META-INF/MANIFEST.MF (No such file or directory)
热门文章
- wi-fi和路由器怎么连接_解决Wi-Fi问题的最简单方法:严重移动路由器
- 家庭观念算老几?(转)
- 一种具备过载检测和打嗝式保护功能的MBUS主机电路
- FFmpeg的下载和安装
- OpenGLES 3.0
- 回归分析之汽车保险数据分析
- oracle grant
- Jira Sprit冲刺更改开始日期时出现 “18/Oct/21 10:38 AM”不是有效日期。请按下列格式输入日期:dd/MMM/yy h:mm a错误
- 四足机器人champ项目和高程图构建elevation_mapping联合使用(Ubuntu18.04)
- [python] fileinput模块