C++重载函数默认参数

标签 c++ linker overloading

我有一个广泛使用的 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/

相关文章:

C++:访问冲突

c++ - 在 Debug 中覆盖 memcpy 工作但在 Release 中不工作?

php - 重载 PHP 函数以首先执行操作

C#函数重载规则

c++ - 它是函数重载还是覆盖?

c++ - 插入函数类 vector c++

c++ - 编写置换函数

c++ - 在 try/catch 外部声明但在内部初始化的指针会导致未定义的行为?

gcc - 链接的 ELF 二进制文件可以包含多个 .text.* 部分(自动)

c - 链接描述文件 : Put a particular file at a later position