首页 > 解决方案 > 如何在函数中使用默认参数?

问题描述

我有一个有 2 个可选参数的函数。有时我只需要第二个参数。

宣言:

void function(int a = 0, int b = 0);

使用第一个参数调用:

function(10);

仅使用第二个参数调用:

function(??,10);

如何使第二次通话有效?据我所知,这样做的唯一方法是使用默认参数作为第一个变量,但必须有更好的方法。

标签: c++

解决方案


没有办法以简单的方式做到这一点,但是你可以使用std::optional它将表现得非常接近:

#include <optional>

void function(std::optional<int> optional_a = {}, std::optional<int> optional_b = {}) {
    auto a = optional_a.value_or(0);
    auto b = optional_b.value_or(0);
    std::cout << a << " " << b << "\n";
}

现在像这样调用函数:

function();
function(5);
function({}, 10);

将给出以下输出:

0 0
5 0
0 10

但是有两个不便之处:您需要引入临时变量,并且调用者不知道从函数声明中判断的默认值是什么。


推荐阅读