》所谓类模板就是建立一个通用类,其数据成员,成员函数的返回类型和形参类型不具体指定,用一个虚拟的类型来代表。

因为上一篇博客已经讲得很细致,所以这一篇会省略一些文字。

》声明:

template <typename 类型参数>

class 类名{

类成员声明

};

关键字的意义和函数模板的一样。

》用类模板定义对象时:

类模板名 <实际类型名> 对象名;

类模板名 <实际类型名> 对象名(实参列表);

例:

template<typenameT>classThree{public:Three(Ta,Tb,Tc){x=a;y=b;z=c;}TSum(){returnx+y+z;}private:Tx,y,z;};intmain(){Three<int>sum3_1(3,5,7);Three<double>sum3_2(12.34,34.56,56.78);cout<<"三个数之和是:"<<sum3_1.Sum()<<endl;cout<<"三个数之和值是:"<<sum3_2.Sum()<<endl;return0;}

类的成员函数(含有类型参数)式定义在类内的,但是,类模板中的成员函数也可以在类模板体外定义,此时若成员函数中有类型参数存在则规则是:

1.需要在成员函数定义之前进行模板声明

2.在成员函数名前加“类名<类型参数>::”

template <typename 类型参数>

函数类型 类名<参数类型>::成员函数名(形参表)

{...

}

上述成员函数在类外定义也可以写成:

template <typename T>

T Three<T>::sum()

{return x+y+z;

}