第五十六课 函数模板的概念和意义
一、变量交换方法
-
宏代码块
优点:代码复用,实何所有的类型
缺点:编译器不知道宏的存在,缺少类型检查
-
定义函数
优点:真正的函数调用,编译器进行类型检查
缺点:根据类型重复定义函数,无法代码复用
二、泛型编程
-
泛型编程就是不考虑具体数据类型的编程方式
对于 swap 函数可以考虑以下泛型写法 void swap(T& a,t& b) { T t = a; a = b; b = t; } 这里的 T 不是一个具体的数据类型,而是泛指任意数据类型
-
C++ 泛型编程
一种特殊函数可用不同类型进行调用
看起来和普通函数很相似,区别是类型可被参数化
template<typename T> void swap(T& a,T& b) { T t = a; a = b; b = t; }
-
函数模板的语法规则
template关键字用于声明开始进行泛型编程
typename 关键字用于声明泛指类型
-
函数模板的使用
自动类型推导调用
int a = 0, b = 1; swap(a, b);
具体类型显示调用
int a = 0, b = 1; swap<int>(a, b);
三、小结
- 函数模板是反省编程在C++中的应用方式之一
- 函数模板能够根据实参对参数类型进行推导
- 函数模板支持显示的指定参数
- 函数模板是C++中重要而代码复用方式