一.引入的原因
使用类模板使用户可以为类声明一种模式,使得类中的某些数据成员、某些成员函数的参数、某些成员函数的返回值,能取任意类型(包括系统预定义的和用户自定义的)
定义的类模板不代表一个具体、实际的类,而代表一类类,在使用类模板就是讲类模板实例化为一个具体的类,它的格式是类名<实际的类型>对象名;
二.声明格式
1.定义一个类模板与定义函数模板的格式类似,必须以关键字template开始,后面的尖括号括起来的模板参数,然后是类名
template<class Type>
class 类名{...............}
2.其中template是一个声明模板的关键字,它表示声明一个模板。关键字class表示后面的Type是模板参数.
例:
template<class T>
class complex
{
private:
T real;
T imag;
public:
complex(T r=0.0,T i=0.0)
{
real=r;imag=i;
}
...............
};
3.在类定义体外定义成员函数时,若此成员函数中有模板参数存在,则需要在函数体外进行模板声明,并且在函数名前的类名后缀上<Type>。
例:
template<class T>
T complex <T>::realcomplex()
{
reutrn real;
}
三.模板实例化
格式:
类名<实际的类型>对象名;
例:
complex<double>s1,s2; //创建两个模板参数为double型;
complex<int>s1,s2; //创建两个模板参数为int型;