模板定义:模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数, 从而实现了真正的代码可重用性。模版可以分为两类,一个是函数模版,另外一个是类模版。说的直观一点就是比如有个变量a,可能是int a;float a;double a;char a;模板的作用就是让(int,double,char)先参数化,使用的时候根据需要再给他赋予类型。template是一个声明模板的关键字,表示声明一个模板关键字typename不能省略,如果类型形参多余一个 ,每个形参前都要加typename<类型 形参表>可以包含基本数据类型可以包含类类型.
例如:
template <typename T>
//固定写法 inline T const& max(T const& a, T const& b)
//第一个T代表函数返回值是T类型的,第二个T代表形参a是T类型的,第三个T代表形参b是T类型的 { return a < b ? : b a; }
当调用
max(1, 2);
的时候,会自动使T=int
但是要注意,1.模板实参不允许自动类型转换,每个T都要正确匹配。例如max(1,1.5)就会出错
2.模板的声明或定义只能在全局,命名空间或类范围内进行。即不能在局部范围,函数内进行,比如不能在main函数中声明或定义一个模板。
摘录别人博客里的几句话做个小总结:
模板是一种对类型进行参数化的工具;
通常有两种形式:函数模板和类模板;
函数模板针对仅参数类型不同的函数;
类模板针对仅数据成员和成员函数类型不同的类。
附上链接:点击打开链接
附上一本书:c++ template