一.使用Templates的原因:例如我们要写一个算法,由于类型不同,我们不得不做一下工作。
1.使用宏定义代替Templates不利于类型检查。
2.将一些算法放在基类里,以后的扩展的子类都需要充基类继承这些算法,不利于维护和扩展。
3.重复一遍有一遍的根据不同类型写出算法,显然是一个很糟糕的决定。
二.引入模版的定义关键字template,引入类型参数的关键字typename/class尽量用typename,类型参数一般用U,T,V等。
三.在编译过程中并不是把函数模版编译成能处理任何类型的实例,而是实例化模版参数的每种类型。
四.在实例化之前检查模版是否有语法错误,在实例化期间检查是否所有调用都有效。