默认参数函数签名更改

use*_*367 -1 c++ overloading

我有一个函数,其当前签名是f(a,b = 0).我想添加另一个参数c.我希望我的函数能够以这种方式调用f(a,b),这是当前行为和f(a,c).一种方法是重载函数并复制功能代码.我不想从f(a,c)调用f(a,b).我在C++工作.

是否有任何标准设计模式或解决方案可以避免此代码重复?

Dav*_*rtz 6

我不完全确定我会关注您,但您可以使用以下变体:

void f(int a, int b=0, int c=0);
void f2(int a, int c=0) { f(a, 0, c); }
Run Code Online (Sandbox Code Playgroud)

请注意,没有代码重复.现在你有另一个函数调用你的第一个函数但允许你指定第三个参数而不是第二个参数.