C++ 参数的隐式默认值?

C++ 参数的隐式默认值?,c++,parameters,default-value,C++,Parameters,Default Value,如果我得到了这个函数,fun(t1,t2,t3),我用fun(v1,v2)调用它,尽管还没有指定v3的默认值,但是否有可能得到v3的默认值?例如bool为false、指针为null、int为0等,或者这是否会引发编译器错误?如下声明: void fun (Foo t1, Bar t2, bool t3 = false) {...} void fun (bool t1, bool t2, bool t3 = true) { } 当您输入=和值时,如果未提供任何值,则该参数将获得默认值。但是,

如果我得到了这个函数,fun(t1,t2,t3),我用fun(v1,v2)调用它,尽管还没有指定v3的默认值,但是否有可能得到v3的默认值?例如bool为false、指针为null、int为0等,或者这是否会引发编译器错误?

如下声明:

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

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

如果函数未重载,则会引发编译器错误

如果您无法更改原型,您可以自己过载:

void fun (bool t1, bool t2)
{ 
   fun (t1,t2, true); //or whatever
}
或者,如果可以对其进行更改,则可以声明参数的默认值,如下所示:

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

是的,谢谢,这就是我害怕的。。我发现“隐式默认参数值”的出现让我大吃一惊。结果发现这篇文章甚至没有被编译