在C++中,可以使用初始化程序列表在構造函數開始運行之前初始化類的字段。例如:爲什麼Java不像C++那樣有初始化器列表?
Foo::Foo(string s, double d, int n) : name(s), weight(d), age(n) {
// Empty; already handled!
}
我很好奇爲什麼Java沒有類似的功能。據核心的Java:第1卷:
C++使用這種特殊的語法來調用構造函數領域。在Java中,不需要它,因爲對象沒有子對象,只有指向其他對象的指針。
這裏是我的問題:「因爲對象沒有子對象」
他們是什麼意思由我不明白什麼是子對象(我試圖查找它);它們是否意味着一個擴展超類的子類的實例?至於爲什麼Java沒有像C++這樣的初始化器列表,我會假定原因是因爲所有的字段在Java中已經被默認初始化了,並且因爲Java使用關鍵字
super
來調用super(或者base C++術語) - 構造函數。它是否正確?
優秀的答案。我對於我的問題的迴應時間非常驚訝。我註冊後我會趕上你。此外,有關C++ 0x的變化鏈接將不勝感激。 –
@ Jesse-很高興幫助!如果你認爲它回答了這個問題,不要忘記接受答案。 :-)我已經在問題中包含了一個C++ 0x更改的鏈接。 – templatetypedef
在晚上一個小時內有19張票... nice :-) –