unary_function的作用是什么

unary_funciton可作为一个一元函数对象(又叫仿函数)的基类,它只定义了参数和返回值的类型,本身并不重载()操作符,这个任务交给派生类去完成。仿函数是使一个类的使用看上去像一个函数。其实现是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了。

unary_funciton可以作为一个一元函数对象(又叫仿函数)的基类,它只定义了参数和返回值的类型,本身并不重载()操作符,这个任务交给派生类去完成。

有些时候,我们在写代码时会发现,某些功能实现的代码会不断的在不同的成员函数中用到,可又不好将这些代码独立出来成为类的一个成员函数,但又很想复用这些代码。写一个公共的函数是一个解决方法,不过函数用到的一些变量,就可能成为公共的全局变量。而且为了复用这么一片代码,就要单立出一个函数,也不好维护,这时就可以用仿函数了。写一个简单类,除了那些维护一个类的成员函数外,就只是实现一个operator(),在类实例化时,就将要用的,非参数的元素传入类中。这样就免去了对一些公共变量全局化的维护。同时,又可以使那些代码独立出来,以便下次复用。而且,这些仿函数还可以用关联、聚合、依赖的类之间的关系,与用到他们的类组合在一起,这样有利于资源的管理(这点可能是它相对于函数最显著的优点了)。如果再配合上模板技术和policy编程思想,就更是威力无穷了,大家可以慢慢的体会。

有时仿函数的使用是为了函数拥有类的性质,以达到安全传递函数指针,依据函数生成对象,甚至是让函数之间有继承关系,对函数进行运算和操作的效果。比如set就使用了仿函数less ,而less继承的binary_function,就可以看作是对于一类函数的总体声明了,这是函数做不到的。

延伸阅读:

什么是派生类?

利用继承机制,新的类可以从已有的类中派生。那些用于派生的类称为这些特别派生出的类的“基类”。

基类说明:在C++中要定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员,我们称已存在的用来派生新类的类为C++基类,又称为父类。

基类表:基类表中存放各个基类名称

基类说明符:基类类体中类成员的访问说明符

文章标题:unary_function的作用是什么,发布者:小编,转载请注明出处:https://worktile.com/kb/p/40951

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编站长
上一篇 2023年2月23日
下一篇 2023年2月23日

相关推荐

  • pdm和plm的区别是什么

    pdm和plm的区别在于以下几个方面:1、本质不一样;2、概念不一样;3、PDM是PLM的一部分。本质不一样是指,PDM提供产品全生命周期的信息管理,并可在企业范围内为产品设计和制造建立一个并行化的协作环境。 一、本质不一样 PDM提供产品全生命周期的信息管理,并可在企业范围内为产品设计和制造建立一…

    2023年2月20日
    4.4K00
  • 数据源的优点有哪些

    数据源的优点有:1、实现数据共享;2、减少数据的冗余度;3、数据的独立性;4、数据实现集中控制;5、数据一致性和可维护性,以确保数据的安全性和可靠性;6、故障恢复。数据共享包含所有用户可同时存取数据库中的数据,并提供数据共享。 1、实现数据共享 数据共享包含所有用户可同时存取数据库中的数据,也包括用…

    2023年1月15日
    33800
  • 编制时间数列的主要原则有哪些

    编制时间数列的主要原则有:1、时期长短较好一致;2、总体范围应该一致;3、计算方法应该统一;4、指标的经济内容应该统一。时期长短一致是指时期数列中各指标数值与时期长短直接相关,在同一个时期数列中各个指标所属时期长短应该相等,这样才能比较。 1、时期长短较好一致 时期数列中各指标数值与时期长短直接相关…

    2023年1月9日
    33600
  • 设置mysql的环境变量

    设置MySQL的环境变量是在许多操作系统中使用MySQL的关键步骤。通过配置环境变量,您可以在命令行中全局访问MySQL命令。本文将介绍如何在不同的操作系统中设置MySQL的环境变量,包括1、Windows操作系统;2、Linux操作系统;3、Mac操作系统。这些步骤将使您能够更方便地使用MySQL…

    2023年8月17日
    25000
  • 研发管理中的持续改进方法

    持续改进是研发管理中不断提升产品质量、增强竞争力的关键策略。主体策略为利用PDCA(计划-执行-检查-行动)循环。这一循环强调1、识别改进领域;2、实施改进措施;和3、评估结果与持续优化。运用这一循环能够确保研发过程能在变化的市场需求和技术进步中保持敏捷和高效。首先,通过数据分析和关键绩效指标(KP…

    2023年11月14日
    2600
  • 有哪些好用的python在线编程环境

    一些好用的python在线编程环境有:1、PyCharm;2、Spyder;3、PyDev;4、Rodeo;5、Sublime-Text;6、Eric;7、Atom等。PyCharm 由捷克公司 JetBrains 开发,是一个特定于 Python 的 IDE,是一个跨平台的 IDE。 一、PyCh…

    2023年2月9日
    36900
  • 什么是技术研发中的快速原型制作

    技术研发中的快速原型制作是创新过程中的关键步骤,它允许设计师和工程师迅速创建产品的工作模型以便于测试和验证。快速制作的核心观点包括:1、加速产品设计周期;2、实时反馈和迭代;3、成本效益分析;4、用户体验增强;5、技术验证和风险降低。使用快速原型可以加速产品从概念到市场的时间,它提供实时反馈,使团队…

    2023年11月30日
    1600
  • 具备项目和日程管理的工具有哪些

    具备项目和日程管理的工具有:1、Worktile;2、PingCode;3、Redmine;4、Omniplan;5、Podio;6、Freedcamp;7、Teamweek;8、Gantt Project。Worktile是一款在国内拥有50万企业用户的项目软件,是国内使用较为广泛的项目管理系统。…

    2023年4月14日
    17600
  • 智能家居属于什么行业

    智能家居是独立的行业。智能家居有部分产品属于安防行业产品,但智能家居不属于安防行业。智能家居属于家居、家电、IT、建筑智能化交叉领域的一个行业。智能家居属于综合布线技术、网络通信技术,功能是无线连接和格通智能家居。 智能家居已经是独立的行业,智能家居有部分产品属于安防行业产品,但智能家居不属于安防行…

    2022年10月25日
    76400
  • 项目管理用什么软件最好

    项目管理可以用:1. Microsoft Project;2. Asana;3. Trello;4. Basecamp;5. Smartsheet;6.Monday.com。Microsoft Project是一个功能强大的项目管理软件,它可以帮助项目经理在项目的不同阶段进行计划、跟踪和控制。该软件…

    2023年2月28日
    18300

发表回复

登录后才能评论
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部