1

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

4

2 回答 2

1

像这样声明它:

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

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

于 2012-04-19T11:14:33.640 回答
1

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

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

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

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

void fun (bool t1, bool t2, bool t3 = true)
{ 
}
于 2012-04-19T11:14:36.687 回答