泛型编程是C++继面向对象编程之后的又一个重点,是为了编写与具体类型无关的代码。而模板是泛型编程的基础。模板简单来理解,可以看作是用宏来实现的,事实上确实有人用宏来实现了模板类似的功能。模板,也可以理解为模具行业的模型。根据分类,有函数模板和类模板。根据传入的不同模板参数,函数模板会生成不同模板函数。类模板则生成不同的模板类。
模板参数
1. 概念
模板定义以关键字template开始,<>中是模板参数列表(template parameter list),模板参数列表即表示可以是一个或多个模板参数(template parameter)。
- 模板实参则是在实例化函数模板或是类模板时的类型或值。
- 模板形参是通过模板实参推导出来的或是直接显式指定。
- 模板参数和普通函数参数一样,可以有默认值参数。
2. 模板形参分类
- 类型参数(type parameter)
表明这个模板参数是一个类型。
template<class/typename T, ……>
- 非类型参数(nontype parameter)
表明这个模板参数不是一个类型,而是常量数值,只能是整形、指针和引用。
