类模板的定义
template<类型形式参数> class 类模板名
{
//类模板体
};
类模板成员函数的定义
template<类型形式参数表>
返回类型 类模板名 <类型名表>::成员函数名(形式参数列表)
{
//函数体
}
定义一个容器的类模板
template<class Type>
Type Container
{
Type tItem;
public:
Container();
void begin(const Type& tNew);
void end(const Type& tNew);
void insert(const Type& tNew);
void empty(const Type& tNew);
};
默认模板参数
template<class T1,class T2 = int>
class MyTemplate
{
T1 t1;
T2 t2;
public:
MyTemplate(T1 tt1, T2 tt2)
{
t1 = tt1;
t2 = tt2;
}
void display()
{
cout<< t1 <<' ' <<tt2 << endl;
}
};
void main()
{
int a = 123;
double b =3.1415;
MyTemplate<int,double> mt1(a,b);
MyTemplate<int> mt2(a,b);//只转入一个参数类型int
mt1.dispaly();//123 3.1415
mt2.dispaly();// 123 3
}
建立数组模板 对数组下标进行检查
C++不能检查数组下标是否越界,建立数组模板来解决这个问题
#include <cassert>
template <class T,int b>
class Array
{
T& opearator[] (int sub)
{
assert(sub>=0 && sub < b);//当有下标越界是情况发生时就弹出对话框警告,然后输出出现错误代码的位置
}
};