4
それは合法ですか?もしそうなら、あなたはそれを良いコーディングの練習とみなしますか?派生クラスメンバを初期化するための基本クラスメソッドの使用
は、私は(必須ではない詳細は示されていない)、このような何かをしたい:
class ItemStorage {
int size() const;
};
class SpecialStorage : public ItemStorage {
public:
SpecialStorage (...) : ItemStorage(...), items(ItemStorage::size()) {...}
private:
int items;
};
私は方法サイズが仮想でない場合、それはOKであることをかなり確信しています。それが仮想で、派生したクラスがそれを上書きしない場合はどうなりますか?
+1:ItemStorageのコンストラクタが最初に呼び出されたことに気付かなかった。 – Puppy
WOW。早く!どうもありがとう。 – watson1180
ベースバージョンは、明示的に指定されているためにのみ呼び出されます。さもなければ、建設中のオブジェクトはSpecialStorageです。この場合、呼び出しは安全ではないかもしれません(まだ初期化されていないメンバーに依存します)。 – UncleBens