我有一个广泛使用的 c++ 库,它包含如下方法:
foo();
我想重载此函数以获得默认参数,例如:
foo(bool verbose=false);
此更改会强制我重新编译使用此功能的每个代码吗?
不能在没有参数的情况下调用 foo()
继续工作,因为无参数签名没有改变吗?
顺便说一下 - 我正在使用 gcc
谢谢
最佳答案
does this change force me to recompile every code that uses this function?
是的,编译会失败,因为会有歧义。
您可以像这样重载函数:
foo(bool verbose);
并将 case foo()
视为参数为 false。
这不需要重新编译。你只有两个功能:
foo() { foo(false); } //possibly
foo(bool verbose);
而不是带有默认参数的。
关于C++重载函数默认参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12160993/