我已经广泛用c保持诸如方法++库:
foo();
我想重载此功能有一个默认参数,例如:
foo(bool verbose=false);
这一变化迫使我重新编译使用此功能,每一个代码? 不能调用foo()
没有参数继续工作的无参数的签名没有改变?
顺便说一句 - 我用gcc
谢谢
我已经广泛用c保持诸如方法++库:
foo();
我想重载此功能有一个默认参数,例如:
foo(bool verbose=false);
这一变化迫使我重新编译使用此功能,每一个代码? 不能调用foo()
没有参数继续工作的无参数的签名没有改变?
顺便说一句 - 我用gcc
谢谢
这一变化迫使我重新编译使用此功能,每一个代码?
是的,编译就失败了,因为会有歧义。
你可以做的是重载函数如下所示:
foo(bool verbose);
和治疗的情况下foo()
如同参数是假的。
这将不需要重新编译。 你只是有两个功能:
foo() { foo(false); } //possibly
foo(bool verbose);
而不是一个具有默认参数中。
如果你的意思是你想兼得,那么你就不能因为没有办法知道你的意思。
如果你的意思是要替换foo()
与foo(bool verbose=false)
那么这将是一个重新编译,因为调用代码是不是真的调用foo()
它调用foo(false)
与语法糖隐藏了。
你可以有,虽然:
someType foo(bool verbose)
{
//real work here.
}
someType foo()
{
return foo(false);
}
或者,如果无效:
void foo(bool verbose)
{
//real work here.
}
void foo()
{
foo(false);
}
但如果你早期的版本foo()
已经完全在一个头和可以内联去过,那是另一回事。