类模板为类定义一种模式,使得类中的某些数据成员,某些成员函数的参数,某些成员函数的返回值,能取任意类型(包括系统预定义的和用户自定义的数据类型)。
如果一个类中数据成员的类型不能确定,或者某个成员函数的参数或返回值的类型不能确定,就必须将此类声明为模板,它的存在不是代表一个具体的实际的类,而是代表一类类。
C++语言编译系统会根据类模板和特定的数据类型产生一个类,即模板类。类模板是一个抽象类,而模板类是由类模板和实际类型结合后由编译系统产生的一个实实在在的类。
定义的语法形式:
template<class 类属参数 1,class 类属参数 2,...>
class name
{
//类定义体
}
template<class 类属参数 1,class 类属参数 2,...>
<返回类型><类名><类型名表>::<成员函数1>(形参表)
class name
{
//成员函数定义体
类模板必须用类型参数将其实例化为模板类,才能用来生成对象。
类模板名<类型实参表>对象名(值实参表)
例:
#include<iostream.h>
template<class T>
class tem
{
T *data;
int size;
public:
tem(int);
~tem();
{delete []data;}
T& operator[](int i)
{return data[i];}
};
template<class T>
tem<T>::tem(int n)
{
data=new T[n];
size=n;
}
void main()
{
tem<int> x(5);
int i;
for(i=0;i<5;i++)
x[i]=i;
for(i=0;i<5;i++)
cout<<x[i]<<'';
cout<<'\n';
}