当某一类函数函数功能相同,而只是函数参数类型不同时,可以采用函数模板,以简化代码。同样的,当类只是成员函数的类型及函数参数类型和数据成员的类型不同时,我们也可以使用类模板对其进行泛化。
template<class T>
T add(const T& t1,const T& t2)
{ return t1 + t2 }
当模板的泛化处理不适合摸个特定的数据类型时,可以使用模板特化技术完善模板对于函数或类的定制功能,我们称之为模板特化和类模板特化。
template <class T>
T mymax(const T t1, const T t2)
{
return t1 < t2 ? t2 : t1;
}
template <>
const char* add(const char* t1,const char* t2)
{
return (strcat(t1,t2) ;
}