### 重载函数模板

在介绍函数时从讨论了具有相同名称但不同参数的函数，这样的函数被称为重载函数。同样，如果具有相同名称但不同参数的函数模板，我们称之为重载函数模板。下面分别定义两个同名的函数模板，用于进行两个数值的加法运算和数值类型数组的求和运算。

重载函数模板

template <class type> //定义一个模板类型

type Add(type Plus,type Summand) //定义一个重载的函数模板

{

return Plus + Summand; //返回两个数之和

}

template <class type> //定义一个模板类型

type Add(type Array[], int nLen) //定义一个重载的函数模板

{

type tRet = 0; //定义一个变量

for(int i=0; i<nLen; i++) //利用循环累计求和

{

tRet += Array[i];

}

return tRet; //返回结果

}

上述代码中定了两个重载的函数模板 Add，第一个 Add 函数模板实现两个数的求和运算，第 2 个 Add 函数模板实现数组元素的求和运算。下面的代码演示了重载函数模板的调用。

int main(int argc, char* argv[]) //主函数

{

int nRet = Add(100, 200); //调用第一个重载的函数模板，实现两个数的求和运算

cout << "整数之和: " << nRet << endl; //输出结果

int nArray[5]= {1, 2, 3, 4, 5}; //定义一个整型数组

int nSum = Add(nArray, 5); //调用第 2 个重载的函数模板，实现数组元素的求和运算

cout << "数组元素之和：" << nSum << endl; //输出结果

return 0;

}

运行程序，效果如图 1 所示。

图 1 重载函数模板