假设我们希望编写一个函数来比较两个值,并指出第一个值是小于、等于还是大于第二个值。在实际中,我们可能就会想到定义多个重载函数:
//两个值相等返回0,第一个值小于第二个值返回-1,第一个值大于第二个值则返回1.
这两个函数几乎是相同的,唯一的差异是参数的类型。
如果对每种希望比较的类型都不得不重复定义完全一样的函数体,是非常繁琐且容易出错的。对于这样的问题,我们可以定义一个通用的函数模板(function template),而不是为每个类型都定义一个新函数。一个函数模板就是一个公式,可用来生成针对特定类型的函数版本:
template <typename T>
int compare(const T& a, const T& b)
{
if(a < b)
return -1;
if(b < a)
return 1;
return 0;
}
泛型编程:编写与类型无关的逻辑代码,是代码复用的一种手段。模板是泛型编程的基础。