4
合法嗎?如果是這樣,你認爲這是不錯的編碼習慣嗎?使用基類方法初始化派生類成員
我想要做這樣的事情(不必要的細節未顯示):
class ItemStorage {
int size() const;
};
class SpecialStorage : public ItemStorage {
public:
SpecialStorage (...) : ItemStorage(...), items(ItemStorage::size()) {...}
private:
int items;
};
我敢肯定,這是確定的,如果該方法大小不虛。如果它是虛擬的並且派生類不覆蓋它呢?
+1:我沒有注意到ItemStorage的構造函數被首先調用。 – Puppy 2010-12-14 23:08:39
WOW。快速!非常感謝。 – watson1180 2010-12-14 23:11:54
它只會調用基本版本,因爲它是明確指定的。否則,正在構建的對象是SpecialStorage,在這種情況下,調用可能不安全(依賴未初始化的成員)。 – UncleBens 2010-12-14 23:35:44