模板分为:函数模板、类模板
模板的实例化(important)
模板通过参数实例化可以构建具体的函数或类,称为模板函数和模板类。
函数模板:
格式:
template <模板形参表>
返回值类型 函数名(参数表)
{ 函数体 }
例如:#include<iostream.h>
template //模板定义,T为模板参数
T abs(T a) { //定义函数模板
return a<0?-a:a;
}
void main(){
int x=-12;
double y=12.5;
cout<<abs(x)<<endl;
cout<<abs(y)<<endl;
}
template是模板定义的关键字。
<模板形参表>中包含一个或多个用逗号分开的模板形式参数,每一项均由关键字class或typename引导一个由用户命名的标识符,此标识符为模板参数(用来进行类型传递)
类模板
应用类模板可以使类中的数据成员、成员函数的参数及成员函数的返回值能根据模板参数匹配情况取任意数据类型。这种类型既可以是C++预定义的数据类型,也可以是用户自定义的数据类型。
格式:
template <模板形参表>
class 类模板名
{
成员的声明;
}
例:template
class Rectangle{
private:
T length,width;
public:
Rectangle(T l, T w );
~Rectangle( );
T getLength( );
T getWidth( );
T circumference( );
T area( );
}