函数重载和模板的区别与联系
函数重载(overloaded):定义函数名相同而形参列表(个数,类别)不同的多个函数,这些函数被称为重载函数,重载函数通常执行的操作非常类似,如打印不同的输入对象。调用函数时编译器根据实参的类型确定调用哪个重载函数。
函数模板(template):实际上是建立一个通用的函数,其函数的类型和形参的类型不具体指定,用一个虚拟的类型来代表,这个通用的函数就成为函数模板。调用函数模板时,编译器(通常)用函数实参来推断(实参推演)模板实参。
对比
注意:相对于函数重载而言,模板不需要重复定义,所以使用起来比函数重载更简洁;
但函数模板只适用于函数的参数个数相同而类型不同,且函数体相同的情况,如果参数的个数不同,则不能用函数模板,这就是函数模板相对于函数重载的缺陷。
区别
函数重载用于定义功能相似的同名函数,提高函数的易用性;函数模板则用于为实现逻辑一样只是参数类型不同的一类函数提供统一的模板,提高函数编写的效率;
函数重载要求参数个数或类型不同;函数模板则要求参数个数必须一样。
联系
函数模板也可以进行重载。
标签:函数,个数,类型,重载,实参,模板 From: https://blog.csdn.net/m0_73537205/article/details/139473147