天下

记录修行的印记

模板特化

#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 天下 阅读(780) 评论(0)  编辑 收藏 引用 所属分类: C/C++C++模板


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

导航

统计

常用链接

留言簿(4)

随笔分类(378)

随笔档案(329)

链接

最新随笔

搜索

最新评论