' bool&'的默认参数在函数声明中

时间:2016-03-16 22:00:20

标签: c++ function-declaration

如果我有如下函数声明:

int Remove(Object *spl, Object1* parent,
           int num, Object2* th = NULL, bool& proceed
          );

我收到一个错误,我需要声明'继续'因为' th'有一个默认参数。我理解为什么。但是我如何为" bool&"制作默认参数?在函数声明中?

2 个答案:

答案 0 :(得分:1)

C ++中的所有函数都必须以默认参数结束。 可以像这样调用你的函数:

^

由于你不能在中间省略参数,所以它们必须徘徊到最后。

关于澄清问题的第一条评论,让我举一个小例子,应该转移到你的申请:

Remove(someSpl, someParent, 10, /* no argument, use default */, someBool);

答案 1 :(得分:1)

澄清:th的值是默认参数,而不是初始化。一旦你在每个参数之后输入一个默认参数,那么必须有一个默认参数。对于通过(可修改的)引用传递的参数具有默认值是不常见的,但如果这是您真正想要的,则必须为该默认参数提供bool对象:

bool bool_value = true;
int Remove(Object *spl, Object1* parent,
           int num, Object2* th = NULL, bool& proceed = bool_value
          );

在函数返回后,如果它更改了proceed的值,则更改将显示在bool_value中。