[toc]
- 模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码;
- 模板是创建泛型类或者函数的蓝图;
- 库容器,比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念;
- 每一个容器都有一个单一的定义,比如vector<>,我们可以定义许多不同类型的向量,比如vector,vector
- 你可以使用模板来定义函数和类;
template <typename type> ret-type func-name(){
// 函数body
}
// type 是函数所使用的数据类型的占位符名称。这个名称可以在函数定义中使用。
template <class type> class class-name{
//
}
// 在这里,type 是占位符类型名称,可以在类被实例化的时候进行指定。您可以使用一个逗号分隔的列表来定义多个泛型数据类型;
解决:
解决方式 1:直接包含.cpp 源文件 解决方式 2:将.h 和.cpp 中的内容写到一起,将后缀名改为.hpp 文件(比较多)
建立一个通用函数,其函数返回值类型和形参类型可以不具体指定,用一个虚拟的类型来代表
总结: 函数模板利用关键字 template 使用函数模板有两种方式:自动类型推导、显示指定类型 模板的目的是为了提高复用性,将类型参数化
类模板没有自动类型推导的使用方式 类模板在模板参数列表中可以有默认参数