如何使bool引用参数默认?

时间:2012-01-28 22:52:01

标签: c++ arguments default-value

在C ++中,是否可以使函数的bool &参数可选?

void foo(bool &argument = /* What goes here? */);

在我的函数foo中,如果调用者不关心放入参数的结果,我希望编译器默认情况下给出一个虚拟位置。否则,不关心的呼叫者必须这样做:

bool ignored;

foo(ignored);

5 个答案:

答案 0 :(得分:6)

制作另一项功能

void foo(){
  bool b=true;
  foo(b);
}

答案 1 :(得分:2)

唯一的方法是传递一个全局变量:

bool someArgument = false;

void foo(bool &argument = someArgument );

答案 2 :(得分:0)

你可以做到。但它非常难看并且弄乱了数据局部性:

static bool result__ = false;

static void foo(bool & result = result__)
{
        result = true;
}

int main()
{
        bool v;
        foo();
        foo(v);
        return v ? 0 : 1;
}

由于C ++支持函数重载,请使用@ QuentinUK的解决方案。

答案 3 :(得分:0)

理想情况下,您应该使用函数重载而不是尝试解决系统问题。虽然像@VJovic提到的那样有合法的方法来实现这一点。使用函数重载时,如果需要添加更多参数,也可以选择其他参数。

答案 4 :(得分:0)

非const引用参数表示您的函数打算修改传递的对象。如果你知道默认情况下你想要哪个对象,那么只需将它用作默认参数。

如果您不打算修改传入的bool,则应声明函数采用bool argument(即不是引用)或const bool &argument。在任何一种情况下,您都可以提供常量默认值true或false。