可以像定義函數模板一樣去定義類模板。定義形式為:
template <模板形參表>
class 類模板名{
成員列表
};
<模板形參表>的格式一般為:<class 類型參數1,clsss 類型參數2,...>
利用類模板可以建立支持各種數據類型的類。
例子:
template<class T>
class Point{
public:
Point():x(0),y(0){}
Point(const T a,const T b);
void Set(const T a,const T b);
void Display(){cout<<"Display:"<<"x="<<x<<",y="<<y<<endl;
private:
T x,y;
};
如果在類模板外部定義成員函數,形式為:
template<模板形參表>
返回類型 類名<類型參數表>::函數名(形式參數列表)
{
函數體
};
例如:
template<class T>
void Point<T>::Set(const T a,const T b)
{
x=a,y=b;
};
用類模板定義對象時,必須為模板形式參數顯式指定類型實參,將類模板實例化,一般形式為:
類模板名<類型實參表>對象名列表;
例如:
Point<int >a,b;
Point<double>m(1,2),n(3,4);
模板形參表可以是非類型形參,其形式與函數形參表相似:
template<class T ,int N>
class Se{
...
};
template<class T,int N>
void Se<T,N>::Set(int i, T value)
{...}