Сообщение Re[4]: Множественное наследование интерфейсов от 12.06.2018 22:02
Изменено 13.06.2018 4:55 AlexGin
Re[4]: Множественное наследование интерфейсов
Здравствуйте, Максим Рогожин, Вы писали:
МР>Привет!
МР>Наследование только от интерфейсов:
МР>
МР>~SomeClass() переопределяет сразу все деструкторы интерфейсов?
У класса может быть только один деструктор!
В этом деструкторе следует очистить все ресурсы, используемые в этом классе и требующие очистки.
МР>Для удаления объекта SomeClass можно любой интерфейс использовать? Например, так можно?
МР>
Да, если в Interface2 определён виртуальный деструктор.
Если же там вирт/деструктора нет, то очистки ресурсов не будет
МР>Привет!
МР>Наследование только от интерфейсов:
МР>
МР>class SomeClass : public Interface1, // интерфейс
МР> public Interface2, // интерфейс
МР> ...
МР> public InterfaceN // интерфейс
МР>{
МР>public:
МР> ~SomeClass();
МР>//...
МР>};
МР>
МР>~SomeClass() переопределяет сразу все деструкторы интерфейсов?
У класса может быть только один деструктор!
В этом деструкторе следует очистить все ресурсы, используемые в этом классе и требующие очистки.
МР>Для удаления объекта SomeClass можно любой интерфейс использовать? Например, так можно?
МР>
МР>std::unique_ptr<Interface2> obj(new SomeClass()); // удаляться будет через интерфейс Interface2
МР>
Да, если в Interface2 определён виртуальный деструктор.
Если же там вирт/деструктора нет, то очистки ресурсов не будет
Re[4]: Множественное наследование интерфейсов
Здравствуйте, Максим Рогожин, Вы писали:
МР>Привет!
МР>Наследование только от интерфейсов:
МР>
МР>~SomeClass() переопределяет сразу все деструкторы интерфейсов?
У класса может быть только один деструктор!
Деструктор — не принимает никаких аргументов.
В деструкторе следует очистить все ресурсы, используемые в объекте данного класса и требующие очистки.
МР>Для удаления объекта SomeClass можно любой интерфейс использовать? Например, так можно?
МР>
Да, если в Interface2 определён виртуальный деструктор.
Если же там вирт/деструктора нет, то очистки ресурсов не будет
МР>Привет!
МР>Наследование только от интерфейсов:
МР>
МР>class SomeClass : public Interface1, // интерфейс
МР> public Interface2, // интерфейс
МР> ...
МР> public InterfaceN // интерфейс
МР>{
МР>public:
МР> ~SomeClass();
МР>//...
МР>};
МР>
МР>~SomeClass() переопределяет сразу все деструкторы интерфейсов?
У класса может быть только один деструктор!
Деструктор — не принимает никаких аргументов.
В деструкторе следует очистить все ресурсы, используемые в объекте данного класса и требующие очистки.
МР>Для удаления объекта SomeClass можно любой интерфейс использовать? Например, так можно?
МР>
МР>std::unique_ptr<Interface2> obj(new SomeClass()); // удаляться будет через интерфейс Interface2
МР>
Да, если в Interface2 определён виртуальный деструктор.
Если же там вирт/деструктора нет, то очистки ресурсов не будет