泛型编程:写出类型无关的代码
想象一下,用同一个模具压制不同颜色的橡皮泥玩具——泛型编程就是这个思路。你写一份逻辑,编译器帮你生成处理各种数据类型的版本。
在 C 语言里,想交换两个变量的值,得针对 int、double、char 分别写几乎一样的函数:
void Swap(int& x, int& y) {
int tmp = x;
x = y;
y = tmp;
}
void Swap(double& x, double& y) {
double tmp = x;
x = y;
y = tmp;
}
void Swap(char& x, char& y) {
char tmp = x;
x = y;
y = tmp;
}
除了类型名,逻辑完全相同。C++ 的模板就是让你只写一次,让编译器去实例化出各个版本。
函数模板
1. 语法
函数模板代表一个函数家族,与具体类型无关。声明时用 template 关键字,尖括号里放类型参数:
template<typename T1, typename T2, ..., typename Tn>
void FunctionName(T1& a, T2& b) {
// ...
}
typename 可以换成 class,效果一样。
用模板改写上面的 Swap:
#include <iostream>
std;
{
T tmp = x;
x = y;
y = tmp;
}
{
a = , b = ;
cout << << a << << b << endl;
(a, b);
cout << << a << << b << endl;
c = , d = ;
cout << << c << << d << endl;
(c, d);
cout << << c << << d << endl;
;
}


