zoukankan      html  css  js  c++  java
  • STL 实参推演

       我们的max函数如下:

    template <typename T>
    inline T const& max (T const& a, T const& b)
    {
        // if a < b then use b else use a
        return  a < b ? b : a;
    }

    我们传递的两个参数类型必须一致,编译器才能得出结论:T必须是你传递的类型。注意:这里不允许进行自动类型转换,每个T都必须正确的匹配

    max(4,7); 可以,两个实参都是int

    max(4,4,2)不行,第一个int,第二个是double

    有3中方法可以处理上面错误:

    1.对实参进行强制类型转换,使他们可以相互匹配

      max(static_cast<double>(4),4.2) 

    2.显示指定(或者限定)T的类型

       max<double>(4,4.2)

    3指定两个参数可以有不同类型。

  • 相关阅读:
    括号匹配
    超级阶梯问题
    进制问题
    rwkj 1423
    next_permutation
    rwkj 1420
    uva-10392-因数分解
    uva-10305-水题-拓扑排序
    uva-10194-排序
    uva-10152-乌龟排序
  • 原文地址:https://www.cnblogs.com/youxin/p/2592223.html
Copyright © 2011-2022 走看看