定义宏代码块
优点:代码复用,适合所有的类型
缺点:编译器不知道宏的存在,缺少类型检查
定义函数
优点:真正的函数调用,编译器对类型进行检查
缺点:根据类型重复定义函数,无法代码复用
c++中的泛型编程
函数模版
一种特殊的函数可用不同类型进行调用
看起来和普通函数很相似,区别是类型可被参数化
template<typename T>
void Swap(T& a, T& b)
{
T t = a;
a = b;
b = t;
}
函数模版的语法规则
template关键字用于声明开始进行泛型编程
typename关键字用于声明泛指类型
函数模版的使用
自动类型推导调用
具体类型显示调用
int a = 0;
int b = 1;
Swap(a,b) //自动推导
float c = 2;
float d = 3;
Swap<float>(c,d) //显示调用
小结
函数模版是泛型编程在c++中的应用方式之一
函数模版能够根据实参对参数类型进行推导
函数模版支持显示的指定参数类型
函数模版是c++中重要的代码复用方式