顾名思义,就是如果存在同样功能但数据类型不同的函数或者类,分别写出不同的定义很冗余,所以将数据类型用一个记号统一表示(参数化),把这些不同函数(或者不同类)给统一成一个模板,这就是数据类型参数化
函数模板
.h文件
template<typename T> T func1(T a) { //函数功能 }
定义如上,使用template和typename关键字,表示这是一个模板,T代表任意的数据类型
.cpp文件
int main() { int b=0; int a = func1(b); return 0; }
使用如上,函数模板会自动识别类型
类模板
.h文件
template<typename T> class Myclass { public:
Myclass();
T func1(); }
template<typename T>
T Myclass<T>::func1();
定义如上,不同的是,类模板的类函数定义时,类名需要加上<T>
.cpp文件
int main() { Myclass<double> a; }