Является ли он законным? Если да, считаете ли вы это хорошей практикой кодирования?Использование методов базового класса для инициализации членов производного класса
Я хочу сделать что-то вроде этого (несущественные детали не показаны):
class ItemStorage {
int size() const;
};
class SpecialStorage : public ItemStorage {
public:
SpecialStorage (...) : ItemStorage(...), items(ItemStorage::size()) {...}
private:
int items;
};
Я уверен, что это нормально, если метод размер не является виртуальным. Что делать, если он виртуальный и производный класс не перезаписывает его?
+1: Я не заметил, что конструктор ItemStorage вызывается первым. – Puppy
WOW. БЫСТРО! Большое спасибо. – watson1180
Он будет вызывать базовую версию только потому, что она явно указана. В противном случае объект под строительство - SpecialStorage, и в этом случае вызов может быть небезопасным (полагаясь на еще неинициализированных членов). – UncleBens