在C ++中,是否可以使函数的bool &
参数可选?
void foo(bool &argument = /* What goes here? */);
在我的函数foo中,如果调用者不关心放入参数的结果,我希望编译器默认情况下给出一个虚拟位置。否则,不关心的呼叫者必须这样做:
bool ignored;
foo(ignored);
答案 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。