类模板的格式:
template<class T1, class T2, ..., class Tn>
class 类模板名
{
// 类内成员定义
};
template<class T>
class Vector
{
public:
Vector(size_t capacity = 10)
:_arr(new T[capacity])
, _size(0)
,_capacity(capacity)
{}
~Vector()
{
if (_arr)
delete[] _arr;
_size = _capacity = 0;
}
private:
T* _arr;
size_t _size;
size_t _capacity;
};
这样我们就简单的建立一个类模板,那么类模板怎么实例化呢?
类模板实例化与函数模板实例化不同,类模板实例化需要在类模板名字后跟<>,然后将实例化的类型放在<> 中即可,类模板名字不是真正的类,而实例化的结果才是真正的类。
// Vector类名,Vector<int>才是类型
Vector<int> s1;
Vector<double> s2;
之后的操作就和正常的类没有任何的区别。
在这里我们如果想要吧类模板中的函数在类外定义,是需要在写一个模板参数列表
//那析构函数举例子
template <class T>
Vector<T>::~Vector()
{
if(_pData)
delete[] _pData;
_size = _capacity = 0;
}