visual c++中的函数模板
visual c++中的函数模板
利用函数重载可以让多个函数使用同一个函数名,如下所示:
Add (int nNum1,int nNum2);
Add(long lNum1,long lNum2);
Add(float fNum1,float fNum2);
Add(double dNum1,double dNum2);
这些函数的功能完全一样,但由于被求和参数的类型不一样,因此,代码不能完全一样,必须为每个重载函数编写实现代码。为了解决这个烦恼,C++提供了函数模板。
函数模板是一种不指定某些参数的数据类型的函数,在函数模板被调用时根据实际参数的类型决定这些函数模板的类型。区别于函数重载,函数模板不需要程序员重复编写函数代码,它可用来生成多个功能相同但参数和返回值的类型不同的函数。
例如:
template
T add(T val1,T val2)
{
return val1+val2;
}
第一行为模板定义,以关键字template开头,尖括号中关键字class后面的表示符T由用户自己定义,它称为类型参数,是函数模板add()中没有确定数据类型的参数val1和val2的类型。定义模板函数时,参数化的数据类型T可以用来定义函数的参数和返回值,在函数体中还可以用来声明工作变量。
定义函数模板时,可以使用多个类型参数,每个参数前面只需要加上关键字class,并用逗号分隔,如:template,请看下面使用函数模板的实例:
#include "iostream.h"
template
T add(T var1,T var2)
{
return var1+var2;
}
void main()
{
int a=1,b=2;
cout<
long c=-12345L,d=-67890L;
cout<
float e=5.00F,f=6.43F;
cout<
}