2012-04-19 33 views
1

如果我有這個函數fun(t1,t2,t3),並且我通過fun(v1,v2)調用它,是否有可能獲得v3的默認值,雖然它沒有被指定是什麼?如布爾是假的,指針爲null,int爲0等或應該提高編譯器錯誤?參數的隱式默認值?

回答

1

如果函數未被重載,將會引發編譯器錯誤。

如果你不能改變的原型,你可以自己重載它:

void fun (bool t1, bool t2) 
{ 
    fun (t1,t2, true); //or whatever 
} 

,或者如果你可以改變它,你可以聲明一個默認的參數是這樣的:

void fun (bool t1, bool t2, bool t3 = true) 
{ 
} 
+0

是的,謝謝,那正是我所害怕的。我發現這種「隱式默認參數值」的發生讓我頗感沮喪。原來這篇文章甚至沒有被編譯。 ;) – user1130005 2012-04-19 11:24:43

1

聲明這樣說:

void fun (Foo t1, Bar t2, bool t3 = false) 
{...} 

當你把一個=和一個值,該參數獲得了一個默認值,如果沒有提供。但是,您必須從參數列表的右側開始使用它們。