仿函数的主要功能是为了搭配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++仿函数调用方式相关推荐

  1. 2021年大数据常用语言Scala(十二):基础语法学习 方法调用方式

    目录 方法调用方式 后缀调用法 中缀调用法 操作符即方法 花括号调用法 无括号调用法 方法调用方式 在scala中,有以下几种方法调用方式, 后缀调用法 中缀调用法 花括号调用法 无括号调用法 在后续 ...

  2. Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式…)介绍(转)

    [-] 一普通同步方式 二事务方式Transactions 三管道Pipelining 四管道中调用事务 五分布式直连同步调用 六分布式直连异步调用 七分布式连接池同步调用 八分布式连接池异步调用 九 ...

  3. Winform开发框架的业务对象统一调用方式

    在这个纷繁的社会里面,统一性的特点能够带来很多高效的产出.牢固的记忆,这种特征无论对于企业.个人的开发工作,知识的传承都有着非常重要的作用,Winfrom框架本身就是基于这个理念而生,从统一的数据库设 ...

  4. Vue组件的三种调用方式

    最近在写fj-service-system的时候,遇到了一些问题.那就是我有些组件,比如Dialog.Message这样的组件,是引入三方组件库,比如element-ui这样的,还是自己实现一个?虽然 ...

  5. 提交响应后无法调用sendredirect_微服务的那些事(三),微服务的远程调用方式。RPC和HTTP...

    2.远程调用方式 无论是微服务还是SOA,都面临着服务间的远程调用.那么服务间的远程调用方式有哪些呢? 常见的远程调用方式有以下几种: RPC:Remote Produce Call远程过程调用,类似 ...

  6. jS四种函数的调用方式

    6- js 函数的四种调用方式 2016年11月04日 13:41:54 阅读数:7559 函数的四种调用方式 函数有下列调用模式 函数调用模式 方法调用模式 构造器模式 上下文模式 函数调用 模式 ...

  7. vue 实例化几种方式_Vue组件的三种调用方式

    最近在写fj-service-system的时候,遇到了一些问题.那就是我有些组件,比如Dialog.Message这样的组件,是引入三方组件库,比如element-ui这样的,还是自己实现一个?虽然 ...

  8. Javascript中匿名函数的多种调用方式

    avascript中定义函数的方式有多种,函数直接量就是其中一种.如var fun = function(){},这里function如果不赋值给fun那么它就是一个匿名函数.好,看看匿名函数的如何被 ...

  9. 【Kotlin】Lambda 表达式 ( 简介 | 表达式语法 | 表达式类型 | 表达式返回值 | 调用方式 | 完整示例 )

    文章目录 I . Lambda 表达式 简介 II . Lambda 表达式语法 III . Lambda 表达式类型 IV . Lambda 表达式返回值 V . Lambda 表达式调用 VI . ...

最新文章

  1. 我的python学习笔记
  2. 荐读:五月最值得阅读的15篇人工智能文章
  3. 关于时间类型数据的转换
  4. 初探 Headless Chrome
  5. Python内置函数min(iterable, *[, key, default])
  6. 【直播回看】「EDGE X Kubernetes · 云原生在边缘的实践与应用」
  7. 休眠事实:有利于双向集vs列表
  8. android二级联动购物车,Android实现二级购物车的全选加反选、总价功能
  9. JedisConnectionException: java.Net.SocketTimeoutException: Read timed
  10. 不做冤大头!大数据“杀熟”最高罚5000万!
  11. Linux企业级项目实践之网络爬虫(29)——遵守robots.txt
  12. 【转载】三角形测试用例
  13. 度数换算_度数换算计算器
  14. 18.ARP报文格式详解
  15. GDC API下载肿瘤数据
  16. JavaSE——IO流
  17. PCB板元器件视觉检测系统解决方案
  18. 使用cmd安装python的matplotlib库
  19. 计算机未来发展报告,2020-2026年中国电子计算机行业发展深度调研与未来趋势报告...
  20. m2e-wtp error: path/target/m2e-wtp/web-resources/META-INF/MANIFEST.MF (No such file or directory)

热门文章

  1. wi-fi和路由器怎么连接_解决Wi-Fi问题的最简单方法:严重移动路由器
  2. 家庭观念算老几?(转)
  3. 一种具备过载检测和打嗝式保护功能的MBUS主机电路
  4. FFmpeg的下载和安装
  5. OpenGLES 3.0
  6. 回归分析之汽车保险数据分析
  7. oracle grant
  8. Jira Sprit冲刺更改开始日期时出现 “18/Oct/21 10:38 AM”不是有效日期。请按下列格式输入日期:dd/MMM/yy h:mm a错误
  9. 四足机器人champ项目和高程图构建elevation_mapping联合使用(Ubuntu18.04)
  10. [python] fileinput模块