模版算是C++的独有特性吧,也算是C++中比较难的地方,我平时开发的时候用的很是少,或者几乎没有用到,须要模版的地方是能看懂框架中相关的代码;算法
模版函数相对仍是很简单的,引入模版的目的在于代码的重用;好比算法类似,可是因为数据类型不一样,咱们不得不把一样的一份代码拷贝两次,而仅仅是为了修改数据类型,那么在引入了函数模版以后,咱们能够仅仅用一份代码而表示不一样重载函数。框架
下面介绍一下最简单的函数模版的应用:函数
template <typename T> //定义一个抽象的数据类型Tspa
T myMax(T a, T b) { //声明函数模板开发
return a > b ? a : b; 编译器
}编译
int main () {模板
int a = 2;数据类型
int b = 3;float
std::cout<<myMax(a, b)<<std::endl; //动态生成函数 int myMax(int , int)
float c = 2.0f;
float d = 3.0f;
std::cout<<myMax(c, d)<<std::endl; //动态生成函数 flota myMax(float, float)
}
代码在第一次调用myMax()函数时,其参数都是int型,则编译器推导模板参数T为int,编译器会以函数模板为样板,以实际类型int代替函数模板中的抽象类型T,自动为这个函数调用生成一个int类型的版本。