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];
}