【问题标题】:Implicit default values for parameters?参数的隐式默认值?
【发布时间】:2012-04-30 21:23:36
【问题描述】:

如果我得到了这个函数 fun(t1, t2, t3),并且我用 fun(v1, v2) 调用它,是否有可能获得 v3 的默认值,尽管它尚未指定会是什么是?比如 bool 为 false,pointer 为 null,int 为 0 等。还是应该引发编译器错误?

【问题讨论】:

    标签: c++ parameters default-value


    【解决方案1】:

    如果函数没有重载,它会引发编译器错误。

    如果你不能改变原型,你可以自己重载它:

    void fun (bool t1, bool t2)
    { 
       fun (t1,t2, true); //or whatever
    }
    

    或者如果你可以改变它,你可以像这样为参数声明一个默认值:

    void fun (bool t1, bool t2, bool t3 = true)
    { 
    }
    

    【讨论】:

    • 是的,谢谢,这就是我所害怕的。我发现这种“隐式默认参数值”的出现让我非常吃惊。原来这件作品甚至没有被编译。 ;)
    【解决方案2】:

    这样声明:

    void fun (Foo t1, Bar t2, bool t3 = false)
    {...}
    

    当您放置一个 = 和一个值时,如果没有提供该参数,则该参数将获得一个默认值。但是,您必须从参数列表的右侧开始使用它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-15
      • 2012-03-14
      • 2012-09-27
      • 1970-01-01
      • 2012-08-01
      • 1970-01-01
      • 2011-03-25
      • 2018-06-20
      相关资源
      最近更新 更多