C++ 默认参数函数签名更改

C++ 默认参数函数签名更改,c++,overloading,C++,Overloading,我有一个函数,它的当前签名是f(a,b=0)。我想添加另一个参数c。我希望以这样的方式调用函数,这样我就可以调用f(a,b),这是当前的行为和f(a,c)。一种方法是重载函数并复制函数代码。我不想从f(a,c)调用f(a,b)。我在C++中工作。 是否有任何标准设计模式或解决方案可以避免此代码重复?我不完全确定我是否理解您的意思,但您可以在这方面使用变体: void f(int a, int b=0, int c=0); void f2(int a, int c=0) { f(a, 0, c);

我有一个函数,它的当前签名是f(a,b=0)。我想添加另一个参数c。我希望以这样的方式调用函数,这样我就可以调用f(a,b),这是当前的行为和f(a,c)。一种方法是重载函数并复制函数代码。我不想从f(a,c)调用f(a,b)。我在C++中工作。
是否有任何标准设计模式或解决方案可以避免此代码重复?

我不完全确定我是否理解您的意思,但您可以在这方面使用变体:

void f(int a, int b=0, int c=0);
void f2(int a, int c=0) { f(a, 0, c); }

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

这对我来说没有多大意义……对我来说也没有多大意义。。。为什么你的函数中没有3个参数?你想有两个同名的函数,它们具有相同的类型,但执行方式不同?!你问这个问题的方式非常混乱——很难理解你想做什么。也许一段示例代码会有所帮助(并给出函数参数的类型,因为这在重载中很重要)。