• 函数作为参数的传递


    要把函数作为参数传递时,有两种方法:1.函数指针;2.仿函数.

    函数指针的方法比较常用:

    Code
    typedef int (*pf)(int,int);
    int f(pf p,int a,int b){
        
    return p(a,b);
    }
    int add(int a,int b){
        
    return a+b;
    }
    int main(){
        cout
    <<f(add,1,2)<<endl;
    }

    但用函数指针时,它无法持有自己的状(局部状态,local states),仿函数就克服了这个缺点.

    仿函数:

    template<class T>
    class Sum{
        T res;
    public:
        Sum(T i
    =0):res(i){}
        
    void operator()(T x){
            res
    +=x;
        }
        T result() 
    const{
            
    return res;
        }
    };

    template
    <class T>
    struct testplus{
        T 
    operator()(const T& x,const T& y)const{
            
    return x+y;
        }
    };
    int main(){
        list
    <double> l;
        l.push_back(
    1.0);
        l.push_back(
    2.0);
        Sum
    <double> s;
        s
    =for_each(l.begin(),l.end(),s);
        cout
    <<"the sum is"<<s.result()<<endl;
        
    //cout<<plus<int>(1,2)<<endl;//error for lost ()
        testplus<int> plusobj;
        cout
    <<plusobj(1,2)<<endl<<testplus<int>()(2,2);
    }
    小人本潜水在思源的贴边
    ID又多 又有钱
    快活乐无边
    谁知道站总监
    他蛮横不留情面
    他勾结站长目无天
    占我ID夺我钱
    我马甲跟他来翻脸
    反被他来把经验减
    我同学骂他欺新人
    反被他捉进了小黑屋里面
    874了一百遍啊一百遍
    啊 最后他咬舌自尽 遗恨人间
    他还将我和马甲赶出了思源 流落在人间
    我为求回思源
    无奈行乞在贴前
    谁知道站总监他实在太阴险
    知道此情形竟派人来暗算将我发文狂删到0篇
    小人ID强 残命独留全
    可怜马甲他 竟遭删
    为求养ID
    惟有傍人卖身自作践
    一面苦赚钱 一面写诗篇
    发誓把名气显
    手刃总监意志坚啊
    从此总监ID念心间
    我永铭记此仇不供戴天
  • 相关阅读:
    Java面试:用set集合的时候,重写过hashcode()和equal()方法吗?有什么作用?
    Bootstrap起步
    Java NIO
    Dobbo和SpringCloud区别
    Java虚拟机类加载机制和双亲委派模型
    继承和组合的特点和区别
    LinkedList和ArrayList底层原理
    聚集索引和非聚集索引
    Stream和迭代器的区别
    悲观锁和乐观锁
  • 原文地址:https://www.cnblogs.com/CUCmehp/p/1389222.html
Copyright © 2020-2023  润新知