前言
● 模板(Template)是一个包含未指定类型的函数或类, 因此模板并不是一个真正的函数或类, 而是代表了一组函数或类, 当为模板函数或类指定了一种类型时,就生成了此模板的一个实例, 这个操作叫做模板实例化。
● 模板可分为函数模板和类模板, 而函数模板又可以分为函数模板和模板函数。对于函数模板, 当编译系统发现了一个对应的函数调用时,将根据实参的类型来确认是否匹配函 数模板中对应的形参, 然后生成一个重载函数, 称该重载函数为模板函数。
函数模板与模板函数的区别在于:函数模板与类相似,是模板的定义; 而模板函数与对象相似,它是函数模板的实例, 具有程序代码、占用内存空间等特征.
● 同样, 在说明了一个类模板后,也可以创建类模板的实例,即生成模板类。类模板与模板类的区别在于: 类模板是模板的定义,不是一个实实在在的类,模板类才是实实在在的类。
函数模板
● 函数模板是C++的新特性, 这个概念在C语言中是没有的。与函数不同的是, 函数模板不是一个实实在在的函数, 而是对逻辑功能相同但数据类型不同的一种函数的统一描述。利用函数模板,可以对函数的类型(返回类型、参数类型)进行参数化处理,也就是函数的类型也可以像变量一样改变。利用函数模板可以用一种逻辑过程处理不同类型的数据,从而极大地提高了编程的效率。
● 函数模板的定义格式如下:
template < class 模板类型参数名1 ,class 模板类型参数名2,.....>
返回类型 函数名 (参数表)
{
// Statement
}
格式说明如下:
(1)模板类型参数名代表形形色色数据类型的通用参数名,它可以