2013-03-11 227 views
0

如果我有一個包含一個類:C++默認構造函數和默認參數

foo(); //sets baz to 10 
foo(int bar = 0); //sets baz to bar 
int baz; 

將「默認的構造函數曾經被使用?

例如將:

foo qux; 

默認爲baz = 0或10?

任何差異爲:

foo * quux = new foo; 
+3

注意:這些都是*默認的構造函數。 – 2013-03-11 00:18:07

+1

看起來像一個合理的問題,爲什麼人們總是在簡單的基礎上降低事物的價值?從常見問題解答 - *「容忍別人誰可能不知道你知道的一切。」*。此外,這不是您通常會在C++入門書中找到的東西。 – JBentley 2013-03-11 01:49:50

回答

6

是否會使用'default'構造函數?

不,構造函數調用指定沒有參數將只是含糊。編譯器無法分辨接受無參數的構造函數是否優於接受具有默認值參數的構造函數,反之亦然。 你的代碼不會編譯

所有差異:foo * quux = new foo;

沒有,同樣的故事。如果您通過new創建對象,則沒有任何變化。編譯器仍然無法決定你打算調用哪個構造函數。

1

這是一個曖昧的電話。因此,我認爲它甚至不應該編譯。編譯器無法決定是否打算調用構造函數foo::foo(int)或默認構造函數foo::foo()