定义
template <类型形式参数表>
返回类型 函数名(形式参数表)
{
//do something
}
template<class T>
void fun(T t)
{
//do something
}
如果采用如下模板,传递了两个不同类型的参数,编译器会产生错误.必须显式标识模板类型
template <class type>
type Sum(type xvar, type yvar)
{
return xvar + yvar;
}
int iret = Sum(10,20);
double dret = Sum(10.5,20.5)
int iret = Sum(10.5, 20);//error
double dret = Sum(10,20.5);//error
int iret = Sum<int>(10.5,20);
double dret = Sum<double>(10,20.5)
重载函数模板
template<class Type>
Type min(Type a, Type b)
{
if(a < b)
{
return a;
}else
{
return b;
}
}
//重载函数模板
char* min(char* a, char* b)
{
if(strcmp(a,b))
{
return b;
}else
{
return a;
}
}