Eu tenho um class A
que usa uma alocação de memória heap para um de seus campos. A classe A é instanciada e armazenada como um campo de ponteiro em outra classe ( class B
.
Quando termino com um objeto da classe B, eu chamo delete
, que eu suponho que chama de destruidor ... Mas isso também chama o destruidor da classe A?
Editar:
A partir das respostas, entendi (por favor, edite se estiver incorreto):
delete
de uma instância de B chama B :: ~ B ();- que chama
A::~A();
A::~A
deve explicitamentedelete
todas as variáveis de membro alocado-heap do objeto A;- Finalmente, o bloco de memória que armazena a instância da classe B é retornada ao heap - quando novo foi usado, ele primeiro alocou um bloco de memória no heap e depois chamou os construtores para inicializá-lo, agora que todos os destruidores foram chamados para finalizar o objeto. bloco em que o objeto residia é retornado ao heap.