两个参数都是默认的?

时间:2012-08-02 19:45:11

标签: c++

    void method( double code = 0, CQueue* = NULL).

我在“.h”文件中定义了此方法。在.cpp文件中,我在ont方法中分配代码的值(我希望队列在这里为空),并在另一个方法中为队列分配一个null(此处代码必须为0)  两个参数都是默认类型,它在c ++中是否有效? 什么可以替代方式?

3 个答案:

答案 0 :(得分:6)

完全有效。这意味着method();method(0, NULL);相同,method(x);method(x, NULL);相同,最后method(x, y);本身就是一样。

要单独传递队列,您需要重载该函数(即具有相同名称但不同参数的另一个函数)。像这样:

void method(queue q)
{
    method(some-default-value, q);
}

答案 1 :(得分:0)

这是有效的。

一个问题:您可能希望将第一个参数用作默认值,而第二个参数则不是默认值 在这种情况下,您需要手动提供第一个参数或使用重载

void method(queue x){
    method(0, x);
}

答案 2 :(得分:0)

在c ++中,您可以在一个条件下拥有所需的默认参数: 具有默认值的参数必须在所有其他参数之后。

当您指定值时,它们将按照函数原型中声明参数的顺序进行分配。