• C++ 模板


    1 作用

    使用类型做参数,是泛型和stl基础,泛型的主要作用是避免危险类型转换

    2 基本形式

    泛型函数

    test.cpp
    #include <iostream>
    using std::cout;
    using std::endl;
    //声明一个函数模版,class可以用typename代替,
    //T可以被任何字母或者数字代替。
    template <class T>
    T min(T x,T y)
    { 
     return(x<y)?x:y;
    }
    void main( )
    {
     int n1=2,n2=10;
     double d1=1.5,d2=5.6;
     cout<< "较小整数:"<<min(n1,n2)<<endl;
     cout<< "较小实数:"<<min(d1,d2)<<endl;
     system("PAUSE");
    }

    泛型类

    template.h
    #ifndef ClassTemplate_HH
    #define ClassTemplate_HH
    template<typename T1,typename T2>
    class myClass{
    private:
         T1 I;
         T2 J;
    public:
         myClass(T1 a, T2 b);//Constructor
         void show();
    };
     
     
    template <typename T1,typename T2>//注意格式
    myClass<T1,T2>::myClass(T1 a,T2 b):I(a),J(b){}
     
    template <typename T1,typename T2>
    void myClass<T1,T2>::show()
    {
         cout<<"I="<<I<<", J="<<J<<endl;
    }
    #endif

    test.cpp
    #include <iostream>
    #include "ClassTemplate.h"
    using std::cout;
    using std::endl;
    void main()
    {
         myClass<int,int> class1(3,5);
         class1.show();
         myClass<int,char> class2(3,'a');
         class2.show();
         myClass<double,int> class3(2.9,10);
         class3.show();
         system("PAUSE");
    }


    3 原理

    模板的编译

    模板的类型推导


    4 特殊

  • 相关阅读:
    PAT 1142 Maximal Clique
    PAT 1076 Forwards on Weibo
    PAT 1021 Deepest Root
    PAT 1030 Travel Plan*
    diji模板
    PAT 1020 Tree Traversals
    PAT 1108 Finding Average
    PAT 1104 Sum of Number Segments
    PAT 1100 Mars Numbers
    PAT 1096 Consecutive Factors
  • 原文地址:https://www.cnblogs.com/nafio/p/9137651.html
Copyright © 2020-2023  润新知