Cześć, mam takie pytanie: jeśli stworzę sobie obiekt, który stworzy dynamiczną tablicę podobiektów, które również utworzą swoją tablicę jakiś obiektów to czy jeśli te podobiekty mają w destruktorze operator delete to czy kasując główny obiekt zwolni mi się również pamięć z tablicami tych podobiektów?
Chciałem się upewnić - bo na logikę to wydaje mi się, że tak właśnie to działa ;) -> ale trochę mnie martwi, że to są tablice w obiekcie głównym i podobiektach...
Czyli reasumując
Clasa A tworzy tablicę dynamiczną obiektów typu B, które tworzą np. tablicę dynamiczną typu C. Clasa B w destruktorze zwalnia pamięć dot. tych tablic. Dlatego, jeśli kasujemy tablicę w klasie A to autmatycznie powinien uruchomić się destruktor w klasie B i skasować tablice z obiektami typu C :) -> czy dobrze rozumuję?
0
0
Tak, jeśli masz tablicę obiektów (ale nie tablicę wskaźników do obiektów) to delete []
na tablicy wywoła destruktory elementów.
0
Jeżeli chodzi o to, że podczas delete
wywoływany jest destruktor to masz rację. Pamiętaj tylko, że sam destruktor nic nie robi, delete
musisz zrobić sam właśnie w nim. Tzn. kiedy usuwasz tę tablicę w klasie A
, to w destruktorze klasy B
musi być odpowiednie delete
tablicy z klasy B
itd - to tak się będzie propagować aż do końca tej hierarchii.