c++ 類模板
阿新 • • 發佈:2020-08-04
- 類模板的定義
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]; }