C++类模板
可以像定义函数模板一样去定义类模板。定义形式为:
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)
{...}