1
如果我有這個函數fun(t1,t2,t3),並且我通過fun(v1,v2)調用它,是否有可能獲得v3的默認值,雖然它沒有被指定是什麼?如布爾是假的,指針爲null,int爲0等或應該提高編譯器錯誤?參數的隱式默認值?
如果我有這個函數fun(t1,t2,t3),並且我通過fun(v1,v2)調用它,是否有可能獲得v3的默認值,雖然它沒有被指定是什麼?如布爾是假的,指針爲null,int爲0等或應該提高編譯器錯誤?參數的隱式默認值?
如果函數未被重載,將會引發編譯器錯誤。
如果你不能改變的原型,你可以自己重載它:
void fun (bool t1, bool t2)
{
fun (t1,t2, true); //or whatever
}
,或者如果你可以改變它,你可以聲明一個默認的參數是這樣的:
void fun (bool t1, bool t2, bool t3 = true)
{
}
聲明這樣說:
void fun (Foo t1, Bar t2, bool t3 = false)
{...}
當你把一個=和一個值,該參數獲得了一個默認值,如果沒有提供。但是,您必須從參數列表的右側開始使用它們。
是的,謝謝,那正是我所害怕的。我發現這種「隱式默認參數值」的發生讓我頗感沮喪。原來這篇文章甚至沒有被編譯。 ;) – user1130005 2012-04-19 11:24:43