上次我们已经讲述了使用类模板的好处,今天我们来讲解一下如何定义和使用类模板?
类模板的定义和类的定义很相似,唯一不同的地方是类模板需要使用template关键字来引出类模板需要使用的抽象类型。
类模板定义的语法大致如下:
template<模板参数类型列表>
class 模板类名
{
...
};
为了方便大家的理解,我们通过实际的例子来讲解。
例1 定义和使用栈类模板
MyStack.hpp的内容:
#ifndef _MYSTACK_HPP_
#define _MYSTACK_HPP_
#include<iostream>
using namespace std;
template<typename T> class CMyStack;
template<typename T>
class CNode
{
public:
CNode(T v) :m_Data(v), m_pNext(NULL){};
protected:
T m_Data;
CNode * m_pNext;
friend class CMyStack<T>;
};
template<typename T>
class CMyStack
{
public:
CMyStack():m_pFirst(NULL){};
~CMyStack()
{
CNode<T> * pTemp = m_pFirst;
while (pTemp)
{
m_pFirst = m_pFirst->m_pNext;
delete pTemp;
pTemp = m_pFirst;
}
}
bool Push(T node);