当前位置:   article > 正文

函数模板和普通函数在一起调用规则研究_函数模板和普通函数在一起时,其调用规则为

函数模板和普通函数在一起时,其调用规则为
  1. /*
  2. 函数模板不允许自动类型转化
  3. 普通函数能够进行自动类型转换
  4. */
  5. /*
  6. 1.函数模板可以像普通函数一样被重载
  7. 2.c++编译器优先考虑普通函数
  8. 3. 如果函数模板可以产生一个更好的匹配,那么选择函数模板
  9. 4.可以通过空模板实参列表的语法限定编译器智能选择模板匹配
  10. */
  11. #include <iostream>
  12. using namespace std;
  13. int Max(int a ,int b)
  14. {
  15. cout<<"int Max(int a ,int b)"<<endl;
  16. return a>b ? a : b;
  17. }
  18. template<typename T>
  19. T Max( T a,T b)
  20. {
  21. cout<<"T Max(T a ,T b)"<<endl;
  22. return a>b ? a : b;
  23. }
  24. template<typename T>
  25. T Max( T a,T b,T c)
  26. {
  27. cout<<"T Max(T a ,T b,T c)"<<endl;
  28. return Max (Max(a,b),c);
  29. }
  30. int main()
  31. {
  32. int a = 1;
  33. int b = 2;
  34. cout<<Max(a,b)<<endl;//当函数模板和普通函数都符合调用时,优先选择普通函数
  35. cout<<Max<>(a,b)<<endl;//若显示使用函数模板,则使用<>类型列表
  36. cout<<Max(3.0,4.0)<<endl;//如果函数模板可以产生更好的匹配 使用函数模板
  37. cout<<Max(3.0,4.0,5.0)<<endl;//重载
  38. cout<<Max('a',100)<<endl;//调用普通函数 因为普通函数可以进行隐式转换
  39. system("pause");
  40. return 0;
  41. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/589669
推荐阅读
相关标签
  

闽ICP备14008679号