在指定其他参数时使用前导参数的默认值

时间:2014-08-23 15:40:33

标签: c++ function parameters

我想知道如何跳过覆盖C ++函数中的参数。例如,查看下面的函数,如果输出有1个参数,你可以调用它而不发送任何参数,比如output();

这将输出5,因为xor的默认值为5.但是,如果我想覆盖" vor",并将xor保留为其默认值,我该怎么做?

输出(NULL,20);

以上没有工作,只是将xor初始化为0.

void output(int xor = 5, int vor = 15) {
    cout << xor << " " << vor << endl;
}

int main()
{
    output(10, 20);
}

2 个答案:

答案 0 :(得分:2)

如果要覆盖第二个默认参数,则必须指定第一个参数。

该功能的可能调用如下

output();         // corresponds to output( 5, 15 );
output( x );      // corresponds to output( x, 15 );
output( x, y );   // corresponds to output( x, y );

其中x和y是一些任意参数。

答案 1 :(得分:0)

要完全实现您想要实现的目标,您可以在output()中切换参数顺序,如下所示:

void output(int vor = 15, int xor = 5) {
    cout << xor << " " << vor << endl;
}

然后,您可以调用output(20)覆盖vor,同时将xor保持为默认值。