泛型编程
当我们之前了解过函数重载后可以知道,一个程序可以出现同名函数,但参数类型不同。
//整型
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;
}
int main()
{
int a = 1, b = 2;
Swap(a, b);
double c = 3, d = 4;
Swap(c, d);
char e = 'a', f = 'b';
Swap(e, f);
return 0;
}
大家可以发现,使用函数重载虽然可以实现,但不足之处也很明显:
1.重载的函数仅仅时类型不同,代码的复用率比较低,只要有新类型出现时,就需要用户自己增加对应的函数
2.代码的可维护性比较低,一个出错可能所有的重载都出错。
那么在C++中就存在这样一种方式,类似于存在一种模具,通过给这个模具填充不同的材料(类型),来获得不同材料的铸件(即生成具体类型的代码)。
泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。