C++的另一种编程思想为泛型编程 主要技术就是模板
C++提供两种模板机制函数模板和类模板
函数模板
作用:建立一个通用函数 其函数返回值和参数类型可以不具体指定 用一个虚拟类型代替
语法:
template<typename T>
函数声明或定义
例如:
两种方式使用函数模板
1.自动类型推导
不写出虚拟类型 系统自动识别 必须推导出一致的类型 才可以使用
2显示指定类型
int a=10,b=20;
1.自动类型推导
mySwap(a,b);
//2.显示指定类型
mySwap<int>(a,b);
注意:写函数模板 函数中需要有虚拟类型 函数模板才可以被调用
普通函数与函数模板区别
例如: char转换成int
普通函数与函数模板的调用规则
既然提供了函数模板 最好不要提供相同的普通函数 否则容易出现二义性
模板的局限性
例如
总结:
利用具体化的模板 可以解决自定义类型的通用化
学习模板不是为了写模板 而是在STL中能够运行系统提供的模板
类模板
类模板的基本语言与函数模板相同 函数声明或定义变成了类的创建
类模板和函数模板的区别
默认参数用=号 template < typename T=int>;
类模板中的成员函数创建时机
类模板对象做函数参数
指定传入类型最常用
类模板与继承
类模板中构造函数和成员函数在类外实现
类模板分文件编写
类模板与友元