2012-01-12 45 views

回答

2

是:第一個是變量定義,第二個是函數聲明。現在,讓我們討論這兩個詞語之間的差異的更有趣的問題:

new Foo() 
new Foo 

是否有差別取決於Foo及其成員的類型!

  • 如果Foo有一個明確的默認構造函數兩個相同
  • 如果沒有默認的構造函數,有一個潛在的區別!如果有任何成員是聚集或內置類型,它將在第一個表達式中進行初始化,但不會在第二個表達式中進行初始化,除非所有具有默認構造的成員都將默認構造。

請注意,這也適用於類的成員。對於變量不能使用使用括號的形式,即以確保初始化對象,你需要使用

Foo aFoo = Foo(); 

如果沒有明確的構造函數取一個參數,或者你不知道(例如,在模板代碼) 。

+0

感謝您的分解和遺憾,重複'?' – pyInTheSky 2012-01-12 19:14:08