模板小结

模板:代码生成器
1)模板在使用中不能将声明与实现放在不同的文件中然后在实现中只INCLUDE声明
2)模板编译
当编译器遇到一个模板定义时 他并不生成代码只有当我们实例化一个模板的特定版本时,编译器才会生成代码。
这就造成发生编译错误时的时机 需要特别理解
1.首先编译模板本身时 编译器只会检查语法错误和拼写错误
2.编译器在模板使用时,会检查实参数目是否正确
3.模板实例化时,发现与类型相关的错误 //真正执行代码的时候才会发现,所以可能出现在链接执行的时候
比如一个返回最大值的函数max

Template<typename  T> T  max(const T &a,const T&b)
{
   If(a<b) return b;
   If(a>b) return a;
   If(a==b) retun a;
} 

我们定义一个类 DataNum da1,da2;
Max(da1,da2);
结果在实例化的时候就可能是错误的,因为我们没有给DataNum类定义重载运算符“<”

2)函数模版的隐式/显示实例化
`#include
using namespace std;

template
T Max(T x, T y) //函数模版的实现
{
return (x > y ? x : y);
}
对于这样的一个模板我们在生成实例时可以使用显示实例化 和隐式实例化
Max(intX, intY) //隐式实例化
cout << Max<int>(intX, intY) << endl;//显示实例化
3)类模板
为了使用类模板 我们必须在模板名后面的尖括号中提供二外信息-即用来代替模板参数的模板实参列表
//用栈为例子
#include
using namespace std;

template

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值