C++ 模板进阶
什么是模板?
做甜点的模具,只需要按压就可以做出大量甜点。 (模具相同 材料颜色不同)
场景:我想写整、单、双浮点的求和函数?
int sum(int a,int b){return a + b;}
float sum(float a,float b){return a + b;}
double sum(double a,double b){return a + b;}
三个函数提·1除了类型不一样,其他的完全一样,代码冗余,能否一个函数完成上面三个函数的功能?
提高程序员的生产率的一个非常有效的方法就是“代码复用”。
面相对象的复用方案 继承 组合 多态
并不能完全指南满足实际编程中对于代码复用的全部要求!
模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数,从而实现了真正的代码重用。
模板关键字
template typename /class
模板与宏很类似
- 宏是在预处理阶段处理,模板是在编译阶段处理。
- 宏不会进行类型检查,只会单纯的进行文本替换,模版会进行类型检查。
- 宏直接就可以产生代码,而编译器遇到模板定义时,并不产生代码,只有当模板实例化后才会产生代码。