前面我们介绍了函数模板,今天我们来介绍类模板,与函数模板的作用类似,编译器从类模板可以自动生成多个类,避免了程序员的重复劳动。
1.类模板的定义:
(1)C++ 中类模板的写法如下:
template <类型参数表>
class 类模板名{
成员函数和成员变量;
};
类型参数表的写法如下:
class类塑参数1, class类型参数2, ...(class 也可用typename替换)
(2)类模板中的成员函数放到类模板定义外面写时的语法如下:
template <类型参数表>
返回值类型 类模板名<类型参数名列表>::成员函数名(参数表)
{
...
}
(3)用类模板定义对象的写法如下:
类模板名<真实类型参数表> 对象名(构造函数实际参数表);
如果类模板有无参构造函数,那么也可以使用如下写法:
类模板名 <真实类型参数表> 对象名;
2.类模板的使用
下面是一个链表的类模板举例:
template<typename T>
class CLink;
template<typename T>
class Node
{
public:
Node(T val = T()) :mdata(val), pnext(NULL){}
//Node(const Node<T>& rhs)
//~Node(){}
private:
T mdata;
Node<T>* pnext;
//template<typename E>
//friend class CLink;
friend class CLink<T>;
};
template<typename T>
class CLink
{
public:
CLink();
~CLink();
bool InsertHead(T val);
void Show();
private:
Node <T>* ph