函数重载 和 模版template

假设,需要设计一个从3个数中找最大值的函数,C语言中需要根据类型定义3个函数:

int max1(int a, int b, int c);
float max2(float a, float b, float c);
long max3(long a, long b, long c);

C语言规定在同一作用域中不能有同名的函数,因此3个函数名字不同,C++中用允许同一函数名定义多个函数,这些函数的参数个数和参数类型不同,实现不同功能。这就是函数重载,如:

int max(int a, int b, int c){}
float max(float a, float b, float c){}
long max(long a, long b, long c){}

         函数重载可以实现一个函数名多用,将实现相同的或类似功能的函数用同一个函数名来定义。但是,有个问题,就是在程序中依然需要分别定义每一个函数,例如定义了3个max函数,只是参数类型不同。为了解决这个问题,C++提供了函数模版(function template)。实际上就是建立一个通用的函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。

template <typename T>;
T max(T a, T b, T c)
{if(b > a) a = b;
 if(c > a) a = c;
 return a;
}
在函数定义时用T来定义变量a,b,c,显然变量类型未确定。要等函数调用时根据实参的类型来确定T是什么类型。其实也可以不用T而用任何一个标识符,许多人习惯用T(Type)。可以看到, 函数模版比函数重载更简洁。但应该注意它只适用于函数的参数个数相同而类型不同,且函数体相同的情况下。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值