C 模板函数重载不同之处点评
创始人
2024-06-22 16:20:26
0

在C++编程语言中,有一种比较特殊的函数叫做模板函数。不过实际上它与普通的函数还是多少有些相同之处的。在这里我们将会为大家讲解一下C++模板函数重载中,不同于普通函数应用的几点注意事项。

1:实例化后的模版函数如果和某个非模版函数的调用一样的情况,会调用非模版函数。但也可以指定调用模版函数,如:

  1. inline int const& max(int const& a, int const& b)  
  2. {  
  3. // 为了便于区分,让返回结果+100  
  4. return a < b ? a+10 : b+100;  
  5. }  
  6. template  
  7. inline T const& max(T const& a, T const& b)  
  8. {  
  9. return a < b ? b : a;  
  10. }  
  11. // 这里模版函数实例化后的形式和一个非模版函数一致。
    可以使用下面的方法指定调用模版函数  
  12. int i = max<>(42, 66); 

2:由于C++模板函数重载的参数是类型,因此它不支持类型转化。但非模版函数支持类型转换:

  1. inline int const& max(int const& a, int const& b)  
  2. {  
  3. return a < b ? b : a;  
  4. }  
  5. template 
  6. inline T const& max(T const& a, T const& b)  
  7. {  
  8. return a < b ? b : a;  
  9. }  
  10. // 由于模版函数不支持类型转换,这里将调用非模版的max函数  
  11. max('c', 42.2); 

试想上面的代码中,如果max('c', 42.2)要调用模板的max函数,它必须满足两个参数和返回值都是同一类型的条件。而给定的两个参数类型不一致,模板函数又不支持类型转换。因此,它找不到相匹配的模板函数,将会调用非模板的max函数。而如果我们强制使用max<>('c', 42.2)调用模板函数的话将会出现编译错误。

以上就是对C++模板函数重载的相关介绍。

【编辑推荐】

  1. C++模板参数具体概念讲解
  2. C++左值与右值之间共同与不同点解析
  3. C++使用接口基本实现方式解析
  4. C++对象复制相关应用方式浅析
  5. C++自定义类实际操作代码浅析

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...