zoukankan      html  css  js  c++  java
  • 将operator()多载化实现仿函式

    STL算法的特殊版本所接受的所谓 条件 或 策略 或 一组动作,都以仿函式形式呈现。

    所谓仿函式(functor)就是使用起来像函式一样的东西。如果你针对某个class 进行

    operator()多载化,它就成为一个仿函式。至于要成为一个可配接的仿函式,还需要一

    写额外的努力。

    #include<iostream>
    using namespace std;

    //由于将operator()多载化了,因此plus成了一个仿函式
    template <class T>

    struct plus{
     T operator()(const T& x,const T& y){return x+y;}
    };

    //由于将operator多载化了,因此plus成了一个仿函式
    template <class T>
    struct minus{
     T operator()(const T& x,const T& y){return x-y;}
    };

    int main()
    {
         //以下产生仿函式对象。
     plus<int> plusobj;

     minus<int> minusobj;

     //以下使用仿函式,就像使用一般函式一样。
     cout<<plusobj(3,5)<<endl;
     cout<<minusobj(3,5)<<endl;

     //以下直接产生仿函式的暂时对象(第一对小括号),并呼叫之(第二对小括号)
     cout<<plus<int>()(43,50)<<endl;
     cout<<minus<int>()(43,50)<<endl;
     
     system("pause");
     return 0;
    }

    上述的plus<T>和minus<T>已经非常接近STL实作了,唯一的差别在于它缺乏

    可配接能力。

  • 相关阅读:
    artZoom 图片可放大旋转
    Node.js究竟是什么?
    图片上传 纯js编码
    图片上传jQuery插件(兼容IE8)
    nodejs API(二)
    zuul网关
    Hystrix集群及集群监控turbine
    熔断器Hystrix及服务监控Dashboard
    Ribbon负载均衡及Feign消费者调用服务
    Eureka集群
  • 原文地址:https://www.cnblogs.com/yanglf/p/2752270.html
Copyright © 2011-2022 走看看