模板类型: 函数模板,类模板。
函数模板定义:
template <模板函数形参表>
返回值类型 函数名(参数表)
{
函数体
}
形参表的每一项均由关键字 class 或 typename引导的用户命名的标识符。
eg. template <typename T>
T abs(T a)
{
return a < 0? -a : a;
}
template <class T>
T max(T x, T y)
{
return (x > y) ? x: y;
}
类模版定义:(成员函数必须是函数模板)
template <模板形参表>
class 类模板名
{
成员的声明;
}
形参表的参数至少应在类的说明中出现一次。
eg:
template <class T>
class Square
{
public:
Square(T y) :x(y)
{
}
T fun()
{
return x*x;
}
private:
T x;
}
若成员函数在类模板之外定义,则每个成员函数的定义如下:
template <模板形参表>
返回值 类模板名 类型名表::成员函数名(参数表)
{
}
eg。
template <class T>
T SeqLn<T>::Delete (const int nst)
{
……
}
类模版的友元函数实现:
声明省去,实现参考:
1. void Scuccess()
{}
2. template<class T>
void Display(SeqIn<T>& mySeqIn)
{
}
3. template<class T1, class T2>
void IntToDouble(SeqLn<T1>& n, SeqLn<T2>& da)
{
}