#include <cstdio>
#include <cstring>
template <class T>
T mymax(const T t1, const T t2)
{
return t1 < t2 ? t2 : t1;
}
//模板特化
//特化为绝对类型
//上述定义中template < >告诉编译器这是一个特化的模板。并且在声明特化模板之前一定要有非特化的声明!并且两个类的名字是一样的!
//特化的模板必须放在非特化的模板的之后
//否则编译器死给你看,如下:
//'const char *mymax(const char *,const char *)' is not a specialization of a function template
template<>
const char* mymax(const char* t1,const char* t2)
{
return (strcmp(t1,t2) < 0) ? t2 : t1;
}
/*
非模板函数
非模板函数具有最高的优先权
const char* mymax(const char* t1,const char* t2)
{
return (strcmp(t1,t2) < 0) ? t2 : t1;
}
*/
int main()
{
int highest = mymax(5,10);
char c = mymax('a', 'z');
const char* p1 = "hello";
const char* p2 = "world";
const char* p = mymax(p1,p2);
return 0;
}