天下

记录修行的印记

模板特化

#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;
}

posted on 2012-02-07 14:45 天下 阅读(656) 评论(0)  编辑 收藏 引用 所属分类: C/C++C++模板


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2018年11月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

导航

统计

常用链接

留言簿(3)

随笔分类(369)

随笔档案(320)

链接

最新随笔

搜索

最新评论