类模版:是一种对只是成员数据类型不同的类的一种模式
模版类:是类模版的一个实例化对象
定义一个类模板,一般有两方面的内容:
A。首先要定义一个类,其格式为:
template<class T>
class test
{
....
}
test为类名,在类定义体中,如果采用通用数据类型的成员,函数参数的前面需加上T,其中通用类型T可以作为普通成员变量的类型。还可以作为成员函数的参数和返回类型等。
例如:
template<class T>
class Test
{
private:
T n;
const T i;
public:
Test():i(0) {}
Test(T k);
~Test(){}
void print();
T operator+(T x);
};
如果在类外定义成员函数,若此成员函数中有模板参数存在,则除了需要和一般类的类外定义成员函数一样的定义外,还需要在函数外进行模板声明
例如:
template<class T>
Test<T>::Test(T k):i(k){ n=k;}
template<class T>
T Test<T>::operator+(T x){
return n + x;
}
template<class T>
Test<T>::Test(T k):i(k){ n=k;}
template<class T>
T Test<T>::operator+(T x){
return n + x;
}