函数重载和模板的区别与联系

函数重载和模板的区别与联系

函数重载(overloaded):定义函数名相同而形参列表(个数,类别)不同的多个函数,这些函数被称为重载函数,重载函数通常执行的操作非常类似,如打印不同的输入对象。调用函数时编译器根据实参的类型确定调用哪个重载函数。
函数模板(template):实际上是建立一个通用的函数,其函数的类型和形参的类型不具体指定,用一个虚拟的类型来代表,这个通用的函数就成为函数模板。调用函数模板时,编译器(通常)用函数实参来推断(实参推演)模板实参。

对比

注意:相对于函数重载而言,模板不需要重复定义,所以使用起来比函数重载更简洁
但函数模板只适用于函数的参数个数相同而类型不同,且函数体相同的情况,如果参数的个数不同,则不能用函数模板,这就是函数模板相对于函数重载的缺陷。

区别

函数重载用于定义功能相似的同名函数,提高函数的易用性;函数模板则用于为实现逻辑一样只是参数类型不同的一类函数提供统一的模板,提高函数编写的效率;
函数重载要求参数个数或类型不同;函数模板则要求参数个数必须一样。

联系

函数模板也可以进行重载。

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值