有没有办法确保传递给函数的两个参数被视为 C++ 中的第一个和第三个参数?

Abh*_*nki 4 c++ overloading default-arguments

假设有一个具有以下原型的函数:

void fun (int = 10, int = 20, int = 30, int = 40);
Run Code Online (Sandbox Code Playgroud)

如果通过向其传递 2 个参数来调用此函数,我们如何确保将这些参数视为第一个和第三个参数,而将第二个和第四个参数视为默认值。

joh*_*ohn 5

// three and four argument version
void fun (int a, int b, int c, int d = 40)
{
    ...
}

// two argument version
void fun (int a, int c)
{
     fun(a, 20, c, 40);
}

// one and zero argument version
void fun(int a = 10)
{
     fun(a, 20, 30, 40);
}
Run Code Online (Sandbox Code Playgroud)

但实际上我的建议是不要。