1、泛型编程:
编写与类型无关的通用代码,是代码复用的一种手段,模板是泛型编程的基础
2、函数模板
2.1 函数模板的概念
函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数特定类型版本
2.2函数模板格式
template<typename T1,typename T2,……>
返回值类型 函数名 (参数列表){}
注意:typename是用来定义模板参数关键字,也可以用class
2.3函数模板的原理
在程序编译的过程中,会将函数模板作为蓝图,根据后面的代码所用到的数据类型来推演生成对应的函数。用到多少种类型的数据,就会生成多少个函数。
2.4函数模板的实例化
用不同类型的参数使用函数模板时,称为函数模板的实例化。模板参数实例化分为:隐式实例化 和显式实例化。
2.4.1隐式实例化
让编译器根据实参推演模板参数的实际类型
2.4.2显式实例化
在函数名后的<>中指定模板参数的实际类型
3、类模板
3.1类模板的定义格式
template<class T1,class T2,……,class Tn>
class
{
};
3.2
其中与typedef的关系,在栈中一个栈存double,一个栈存int,比较麻烦,而类模板可以很好解决;同时类模板都是显示实例化
模板一般不声明与定义分离,会编译报错