一直觉得模板类是特别神奇的东西,它可以构造出不同类型的对象,使代码更加的灵活。这个过程就是类模板的实例化。
我们使用类的模板写一个stack类:
#include<assert.h>
#include"Seqlist1.h"
using namespace std;
template<class T,template<class> class Container = Seqlist>
class Stack
{
public:
void Push(const T& x)
{
_con.Pushback(x);
}
void Pop()
{
_con.Popback();
}
bool Empty()
{
return Size() == 0;
}
size_t Size()
{
return _con.Size();
}
T& Top()
{
size_t size = Size();
assert(size > 0);
return _con[size - 1];
}
void print()
{
_con.Print();
}
T& operator[](size_t index)
{
return _con[index];
}
protected:
Container _con;
};
其中我们可以传入不同类型的T,class Continer是类型T的一个容器,这里默认是用自定义的一个顺序表来当容器。编译器就会构造出不同的代码出来。
这样的实现方式是在类内定义成员函数,并把整个类放在.h中,这种方式叫做类模板的包含模式