Ist es legal? Wenn ja, halten Sie es für eine gute Kodierungspraxis?Verwenden von Basisklassenmethoden zum Initialisieren von abgeleiteten Klassenmembern
mag ich so etwas wie dies tun (nicht-essentielle Details werden nicht angezeigt):
class ItemStorage {
int size() const;
};
class SpecialStorage : public ItemStorage {
public:
SpecialStorage (...) : ItemStorage(...), items(ItemStorage::size()) {...}
private:
int items;
};
ich mir ziemlich sicher bin, dass es in Ordnung ist, wenn die Methode Größe nicht virtuell ist. Was ist, wenn es virtuell ist und die abgeleitete Klasse es nicht überschreibt?
+1: Ich habe nicht bemerkt, dass der Konstruktor von ItemStorage zuerst aufgerufen wird. – Puppy
WOW. SCHNELL! Danke vielmals. – watson1180
Es würde die Basisversion nur aufrufen, weil sie explizit angegeben ist. Andernfalls ist das Objekt im Aufbau SpecialStorage, und in diesem Fall ist der Aufruf möglicherweise nicht sicher (er basiert auf noch nicht initialisierten Mitgliedern). – UncleBens