问题
C++ 中有几种交换变量的方法?
交换变量的方法
定义宏代码块
- 优点:代码复用,适合所有类型
- 缺点:编译器不知道宏的存在,缺少类型检查
定义函数
- 优点:真正的函数调用,编译器对类型进行检查
- 缺点:根据类型重复定义函数,无法代码复用
新的需求
C++ 中有没有解决方案集合两种方法的优点?
泛型编程的概念
不考虑具体数据类型的编程方式
Swap 泛型写法中的 T 不是一个具体的数据类型,而是泛指任意的数据类型
C++ 中泛型编程
函数模板
- 一种特殊的函数可用不同类型进行调用
- 看起来和普通函数很相似,区别是类型可被参数化
函数模板的语法规则
template 关键字用于声明开始进行泛型编程
typename 关键字用于声明泛指类型
函数模板的使用
自动类型推导调用
具体类型显示调用
小结
函数模板是泛型编程在 C++ 中的应用方式之一
函数模板能够根据实参对参数类型进行推导
函数模板支持显示的指定参数类型
函数模板是 C++ 中重要的代码复用方式