1. 程式人生 > 實用技巧 >c++ 類模板

c++ 類模板

  • 類模板的定義
template<class T1,class T2,…>
class 類名{
    	……								// 類成員的宣告與定義
}

其中T1、T2是型別引數 類模板中可以有多個模板引數,包括型別引數和非型別引數
非型別引數是指某種具體的資料型別,在呼叫模板時只能為其提供用相應型別的常數值。非型別引數是受限制的,通常可以是整型、列舉型、物件或函式的引用,以及物件、函式或類成員的指標,但不允許用浮點型(或雙精度型)、類物件或void作為非型別引數。

在下面的模板引數表中,T1、T2是型別引數,T3是非型別引數。

template<class T1,class T2,int T3>
  • 類模板的特化
template <> 返回型別 類模板名<特化的資料型別>::特化成員函式名(引數表){
   …… 								//函式定義體
}

如下:

template<class T>
class Array{
    private:
        T a[Size];
    public:
        Array(){
            for(int i=0;i<Size;i++){
                a[i]=0;
            }
        }
        T &operator[](int i);
        void Sort();
};

template<class T> T& Array<T>::operator[](int i){
    if(i<0||i>Size-1){
        cout<<"\n陣列下標越界!"<<endl;
        exit(1);
    }
    return a[i];
}