参数的隐含默认值?

时间:2012-04-19 11:11:02

标签: c++ parameters default-value

如果我有这个功能,有趣(t1,t2,t3),并且我通过有趣的方式调用它(v1,v2),是否可以获得v3的默认值,尽管它没有被指定为什么是?例如bool为false,指针为null,int为0等。或者是否应该引发编译错误?

2 个答案:

答案 0 :(得分:1)

声明如下:

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

当您输入=和值时,如果未提供任何值,则该参数将获得默认值。但是,您必须从参数列表的右侧开始使用它们。

答案 1 :(得分:1)

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

如果您无法更改原型,可以自行重载:

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

或者如果您可以更改它,您可以声明参数的默认值,如下所示:

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