在C++中,是否有可能使bool &
函數的參數爲可選項?如何使默認的布爾引用參數?
void foo(bool &argument = /* What goes here? */);
在我的函數foo,如果主叫方不關心結果投入的說法,我想編譯器在默認情況下給一個虛擬位置。否則,誰不關心調用者必須這樣做:
bool ignored;
foo(ignored);
在C++中,是否有可能使bool &
函數的參數爲可選項?如何使默認的布爾引用參數?
void foo(bool &argument = /* What goes here? */);
在我的函數foo,如果主叫方不關心結果投入的說法,我想編譯器在默認情況下給一個虛擬位置。否則,誰不關心調用者必須這樣做:
bool ignored;
foo(ignored);
進行其他功能
void foo(){
bool b=true;
foo(b);
}
唯一的辦法是通過一個全局變量:
bool someArgument = false;
void foo(bool &argument = someArgument);
你可以做到這一點。但它是非常醜陋,打亂了數據位置:
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的解決方案。
聰明的把戲。我同意@ QuentinUK的功能重載解決方案是最好的。 – netjeff 2012-01-29 01:00:34
理想情況下,您應該使用函數過載而不是嘗試解決系統問題。雖然有合法的方法來實現這一點,就像@VJovic提到的那樣。使用函數重載時,如果需要添加更多參數,則可以使其他參數可選。
非const引用參數意味着你的函數打算修改傳遞的對象。如果你知道你想要哪個對象是默認的,那麼就把它用作默認參數。
如果您不打算修改要通過的bool
,那麼您應該聲明函數採取bool argument
(即不是參考)或const bool &argument
。無論哪種情況,您都可以提供一個固定的默認值true或false。
非常好的C++ - 唯一的解決方案。 +1 – 2012-01-28 22:59:58
+1簡單,優雅,易於維護/理解。 – 2012-01-29 04:40:37