mfc 函数模板

函数模板的使用

一、 函数模板的使用
   使用函数模板可以简化 形参个数相同,而类型不同的函数。  
 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\n",max(1,2),max(1,1,1));
     printf("数组a最大值为%d \n",max(a,sizeof(a)/sizeof(int)));
     printf("数组a最大值为%f ",max(af,sizeof(af)/sizeof(float)));
    
    getchar();
    return 0;
}

 

posted @ 2016-12-14 14:30  whzym111  阅读(401)  评论(0编辑  收藏  举报