本文主要参考了C++ Primer 5,模板类和泛型编程
1 背景
模板类产生的背景呢,就是想要创建一个通用的函数模板,模板就和类一样,可以实例化,实例化时不需要任何参考既可以应用char,也可以应用int和double等;
比如:比较int compare(int a,int b)
和 函数int compare(double a,double b)
;
初始想法就是定义多个重载函数的方法;
重载函数,定义的函数除了形参不同,函数内部大体都一样,所以面对这样的问题,有了泛型编程
和模板类
对于上面比较大小可以定义一个模板类:
template <typename T>
//初次接触模板类,可能对这种定义方式比较乱;
//简而言之,可以将 T 看出任意一个类型参数 而typename就是定义这是一个模板参数(个人理解,帮助理解,不是严格的定义)
// 定义完之后 T等同于任何一个参数 包括char int double float,class,vector等
//就像搓麻将时候的赖子,typename T 目的就是定义牌面是T的牌可以当赖子
//那么以后打牌时,T可以当任意牌打出;
int compare(const T &v1,const T &v2)
{
if(v1<v2)return -1;
if(v2<v1) return 1;
return 0;
}
官方定义: