Ich habe eine, class A
die eine Heap-Speicherzuordnung für eines ihrer Felder verwendet. Klasse A wird instanziiert und als Zeigerfeld in einer anderen Klasse gespeichert ( class B
.
Wenn ich mit einem Objekt der Klasse B fertig bin, rufe ich auf delete
, von dem ich annehme, dass es den Destruktor aufruft ... Aber ruft dies auch den Destruktor der Klasse A auf?
Bearbeiten:
Aus den Antworten nehme ich das (bitte bearbeiten, wenn falsch):
delete
einer Instanz von B ruft B :: ~ B () auf;- was anruft
A::~A();
A::~A
sollte explizitdelete
alle Heap-zugewiesenen Mitgliedsvariablen des A-Objekts enthalten;- Schließlich wird der Speicherblock, in dem die Instanz der Klasse B gespeichert ist, an den Heap zurückgegeben. Wenn new verwendet wurde, hat er zuerst einen Speicherblock auf dem Heap zugewiesen und dann Konstruktoren aufgerufen, um ihn zu initialisieren, nachdem alle Destruktoren aufgerufen wurden, um das Objekt zu finalisieren Block, in dem sich das Objekt befand, wird an den Heap zurückgegeben.