c++ template 易错语言细节

易混概念:
函数模板:就是template<class t>...
模板函数:通过 函数模板 实例化出来的 函数。
1 )在定义模板时,不允许 template 语句与函数模板之间有任何其他语句。下面的模板定义是错误的:


 template <typenameT>
   int a;//错误,不允许在此位置有任何语句
 T Max(T x,Ty){ … }

现象:


2 )不要把这里的 class 与类的声明关键字 class 混淆在一起,虽然它们由相同的字母组成,但含义是不同的。为了区别类与模板参数中的类型关键字 class ,标准 C++ 提出了用 typename 作为模板参数的类型关键字,同时也支持使用 class 。如果用 typename 其含义就很清楚,肯定是类型名而不是类名。 

3 )函数模板的类型参数可以不止一个,可根据实际需要确定个数,但每个类型参数都必须用关键字 typename class 限定。
template <class T1,classT2,class T3>
T1 Func(T1 a, T 2 b, T3 c){ … }
 (4)如果调用函数的形参类型与函数模板不匹配:

template <typename T>
T Max(T x, T y)
{ 
	return x>y? x:y ;
}
 Max(2, 2.3)  // 出错, 因为 2.3 与 2 不属于同一种数据类型

编译错误:
PS:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值