随笔 - 62  文章 - 96  trackbacks - 0
<2007年1月>
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用链接

留言簿(7)

随笔分类(66)

随笔档案(62)

文章分类(31)

文章档案(32)

友情链接

最新随笔

积分与排名

  • 积分 - 207154
  • 排名 - 104

最新评论

阅读排行榜

评论排行榜

#include<cstdio>
using namespace std;
template<class T, class T1, class T2>
T sum(T1 v1, T2 v2)
{
	T value = v1 + v2;
	return value;
}
int main()
{
	int i = sum<int>(1,2.1);//调用正确。
	return 0;
}
#include<cstdio>
using namespace std;
template<class T1, class T2, class T>
T sum(T1 v1, T2 v2)
{
	T value = v1 + v2;
	return value;
}
int main()
{
	int j = sum<int>(1,2.1);//调用错误。
	int k = sum<int, int, double>(1,2.1);//调用正确。
	return 0;
}
这两种区别就在于template的定义:
template<class T, class T1, class T2>
与
template<class T1, class T2, class T>
显式模板实参与对应模板形参相匹配。
int j = sum<int>(1,2.1);
在这个调用中,int对应的是T1, 没有实参的类型可以推断T的类型,故该调用是错误的。
posted on 2007-01-22 23:50 beyonlin 阅读(380) 评论(0)  编辑 收藏 引用 所属分类: C++之路

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