模板template
模板的概念
1.所谓模板是一种使用无类型参数来产生一系列函数或 类的机制。
2.若一个程序的功能是对某种特定的数据类型进行处 理,则可以将所处理的数据类型说明为参数,以便在 其他数据类型的情况下使用,这就是模板的由来。
3.模板是以一种完全通用的方法来设计函数或类而不必 预先说明将被使用的每个对象的类型。
4.通过模板可以产生类或函数的集合,使它们操作不同 的数据类型,从而避免需要为每一种数据类型产生一 个单独的类或函数
求大值模板函数实现
例:
1.求两个数大值,使用模板
template < class T >
T max(Ta , T b)
{
return ( a > b ) ? a : b;
}
2.template < 模板形参表> <返回值类型>
<函数名>(模板函数形参表)
{ //函数定义体 }
模板工作方式
函数模板只是说明,不能直接执行,需要实例化 为模板函数后才能执行;
在说明了一个函数模板后,当编译系统发现有一 个对应的函数调用时,将根据实参中的类型来确 认是否匹配函数模板中对应的形参,然后生成一 个重载函数。该重载函数的定义体与函数模板的 函数定义体相同,它称之为模板函数
模板的优缺点
函数模板方法克服了C语言解决上述问题时用大 量不同函数名表示相似功能的坏习惯;克服了宏定义不能进行参数类型检查的弊端;克服了C++函数重载用相同函数名字重写几个函 数的繁琐。
缺点,调试比较困难。 一般先写一个特殊版本的函数; 运行正确后,改成模板函数