模板基础概念
1.定义:模板是C++通用代码机制,让函数/类可以适配多种不同数据类型
2.作用:消除同逻辑不同类型的重复代码,提升代码复用、扩展性
3.分类:分为函数模板、类模板两大类
函数模板
1.语法格式
template 或 template
返回值 函数名(形参列表){
函数体
}
T:类型参数(占位符),编译时根据实参自动替换成具体类型(int/char/自定义类)
2.核心原理:类型替换
编译阶段编译器根据传入的数据类型,自动生成对应类型的函数代码;所有用到原固定类型的位置全部替换为模板参数T
3.示例
通用冒泡排序

4.模板适配自定义类型
前提:自定义类需要重载>运算符,模板排序才能正常比较大小

类模板
1.语法格式
template
class 类名{
T成员变量;
public:
成员函数;
}
2.使用规则
实例化对象时必须显式指定类型:类名<具体类型>对象
编译器根据指定类型,实例化生成对应类型的类代码
3.示例
取最大值类

类型替换通用注意事项
1.模板里所有原本写死的固定类型(int/char),全部统一替换成模板参数T,不能遗漏
2.函数模板:大多自动推导类型,不用手动指定
3.类模板:实例化必须在< >写明具体数据类型,无法自动推导
核心总结
1.模板=类型占位符,一份代码适配多类型
2.函数模板:解决通用算法(排序、交换、最值)
3.类模板:设计通用容器类
4.自定义类接入模板:需要重载运算符满足模板内部比较、运算