stl编程概述和函数对象、函数指针

来源:互联网 发布:南昌军工软件 编辑:程序博客网 时间:2024/06/05 04:41

最近看了本书,叫stl应用,直观感受就是stl其实就是那几种容器加算法(内存分配器、配接器),然后就没了,正准备进攻源码剖析,这是后话

先讲讲这之中的函数对象和函数指针

函数指针,好用

typedef void (*PFT) ( char ,int );void bar(char ch, int i){    cout<<"bar "<<ch<<' '<<i<<endl;    return ;}void foo(char ch, int i, PFT pf){    pf(ch,i);    return ;}PFT pft;pft = bar;foo('e',12,pft);

函数对象,多余

class Func{public:    int operator() (int a, int b)    {        cout<<a<<'+'<<b<<'='<<a+b<<endl;        return a;    }};int addFunc(int a, int b, Func& func){    func(a,b);    return a;}Func func;addFunc(1,3,func);

据说这样更安全,没看出来,下面是用泛型改造的,使用面积扩广了

class FuncT{public:    template<typename T>    T operator() (T t1, T t2)    {        cout<<t1<<'+'<<t2<<'='<<t1+t2<<endl;        return t1;    }};template <typename T>T addFuncT(T t1, T t2, FuncT& funct){    funct(t1,t2);    return t1;}FuncT funct;addFuncT(2,4,funct);addFuncT(1.4,2.3,funct);



原创粉丝点击