У меня есть, class Aкоторый использует выделение кучи памяти для одного из своих полей. Класс A создается и сохраняется как поле указателя в другом классе ( class B.
Когда я закончу с объектом класса B, я вызываю delete, который, я полагаю, вызывает деструктор ... Но вызывает ли это и деструктор класса A?
Редактировать:
Из ответов, я беру это (пожалуйста, измените, если неправильно):
deleteэкземпляра B вызывает B :: ~ B ();- какие звонки
A::~A(); A::~Aдолжен явноdeleteвсе выделенные кучей переменные-члены объекта A;- Наконец, блок памяти, хранящий указанный экземпляр класса B, возвращается в кучу - когда использовался new , он сначала выделял блок памяти в куче, затем вызывал конструкторы для его инициализации, теперь после того, как все деструкторы были вызваны для завершения объекта, блок, в котором находился объект, возвращается в кучу.