C ++在函数中只使用一个默认参数

时间:2017-01-19 16:29:56

标签: c++ function

我如何只使用第三个参数(第一个和第二个参数必须是默认值)?

像这样:

double func(const double a = 5, const double b = 6, const double c = 7);

int main()
{
    cout << "A = " << func(10) << endl << endl; //if i do like this, i'm using first argument, but not 3rd.
}

3 个答案:

答案 0 :(得分:2)

C ++不支持您当前要执行的操作。但是,有很多方法可以解决它。您可以使用Named Parameter Idiom或提升Paremeter library

我推荐前者。它更清晰,更容易调试等......

答案 1 :(得分:0)

执行此操作的唯一方法是交换参数顺序:

double func(const double c = 7, const double a = 5, const double b = 6);

答案 2 :(得分:0)

您可以(可能)使用一些包装类型并重载,然后在调用时使用类型命名参数:

struct A { double a; constexpr static double def = 5.0; };
struct B { double b; constexpr static double def = 6.0; };
struct C { double c; constexpr static double def = 7.0; };

double func(double a=A::def, double b=B::def, double c=C::def) { /* whatever */ }

double func(A a) { return func(a.a, B::def, C::def); }
double func(B b) { return func(A::def, b.b, C::def); }
double func(C c) { return func(A::def, B::def, c.c); }

int main()
{
    func(A{3.0});
    func(B{9.0});
    func(C{12.0});
}