C++模板函数重载不同之处点评

在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++模板函数重载的相关介绍。

分享文章:C++模板函数重载不同之处点评
标题来源:http://www.shufengxianlan.com/qtweb/news13/357613.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联