函数模板的使用 一、 函数模板的使用 使用函数模板可以简化 形参个数相同,而类型不同的函数。 template<typename T> //可以用class替换typename int max(int array[],int len) // int array[len] { int imax=0; for(int i=0;i<len;i++) { if(array[i]>imax) { imax=array[i];//取得最大值 } } return imax; } float max(float array[],int len) // int array[len] { float imax=0; for(int i=0;i<len;i++) { if(array[i]>imax) { imax=array[i];//取得最大值 } } return imax; } double max(double array[],int len) // int array[len] { double imax=0; for(int i=0;i<len;i++) { if(array[i]>imax) { imax=array[i];//取得最大值 } } return imax; } 111,222 6 99.887703
使用模板后代码,不同类型的重载 ,只需要定义一个模板函数
#include "stdafx.h" #include <malloc.h> int max(int a,int b) { return 111; } int max(int a,int b,int c) { return 222; } //int max(int array[],int len) // int array[len] //{ // int imax=0; // for(int i=0;i<len;i++) // { // if(array[i]>imax) // { // imax=array[i];//取得最大值 // } // } // return imax; //} // //float max(float array[],int len) // int array[len] //{ // float imax=0; // for(int i=0;i<len;i++) // { // if(array[i]>imax) // { // imax=array[i];//取得最大值 // } // } // return imax; //} template <class S,class ti> S max(S array[],ti len) // int array[len] { S imax=0; for(ti i=0;i<len;i++) { if(array[i]>imax) { imax=array[i];//取得最大值 } } return imax; } int _tmain(int argc, _TCHAR* argv[]) { int a[6]={1,2,3,4,5,6}; float af[6]={1.0,3.0,1.0,0,0,99.8877}; printf("%d,%d ",max(1,2),max(1,1,1)); printf("数组a最大值为%d ",max(a,sizeof(a)/sizeof(int))); printf("数组a最大值为%f ",max(af,sizeof(af)/sizeof(float))); getchar(); return 0; }