Я написал чистый виртуальный деструктор и реализовал его в абстрактном базовом классе и переопределить его в производных классах.Деструктор, когда производный класс содержит указатель на объект базового класса
Однако в одном из классов у меня есть указатель на объект базового класса.
Теперь, если деструктор производного класса записывается следующим образом:
virtual ~DerivedClass()
{
delete this->pointerToAnotherDerivedClassObject;
}
или будет объект будет удален автоматически? Поскольку деструктор базового класса всегда называется так, я не могу решить, позаботится ли он об этом или нет.
EDIT: Моя ошибка для указания, что это указатель на базовый класс, поскольку он фактически является указателем на другой объект производного класса.
Звучит как серьезный дефект дизайна. Действительно ли производный класс владеет экземпляром базового класса? –
Я не написал этот код с нуля, он был передан мне на полпути в этом состоянии. – Elia
Является ли это указателем на себя или отдельный объект базового класса? т.е. 'pointerToBaseClassObject = (Base *) this;' или 'pointerToBaseClassObject = other'. – lcs