Mam, class A
który używa alokacji pamięci sterty dla jednego ze swoich pól. Klasa A jest tworzona i przechowywana jako pole wskaźnika w innej klasie ( class B
.
Kiedy skończę z obiektem klasy B, wzywam delete
, który, jak przypuszczam, wywołuje destruktor… Ale czy to wywołuje również destruktor klasy A?
Edytować:
Z odpowiedzi wyciągam to (edytuj, jeśli są nieprawidłowe):
delete
instancji B wywołuje B :: ~ B ();- który dzwoni
A::~A();
A::~A
powinny jawniedelete
wszystkie przypisane do sterty zmienne składowe obiektu A;- Na koniec blok pamięci przechowujący wspomnianą instancję klasy B jest zwracany na stertę - gdy nowy został użyty, najpierw przydzielił blok pamięci na stercie, a następnie wywołał konstruktory, aby go zainicjować, teraz po wywołaniu wszystkich destruktorów w celu sfinalizowania obiektu blok, w którym rezydował obiekt, jest zwracany na stertę.