Kopiowanie zawartości wskaźników do zmiennych

0

Witam. Mam małe pytanko odnośnie kopiowania zawartości wskaźników do zmiennych.
Czy po

 
class foo;
foo *f = new foo;
foo g = *f;

Sam muszę zwalniać pamięć po *f (czyli również g nie będzie miała się do czego odwoływać) czy zrobi to za mnie kompilator(teoretycznie sam powinien zwalniać pamięć po zmiennych).
Zastanawiam właśnie jak kompilator postępuje w takich przypadkach.
Pozdrawiam

1

Kompilator skopiuje Ci klasę wskazywaną przez f do g. Dokładnie to wywoła konstruktor kopiujący klasy foo. Pamięć zaalokowana przez operator new zostanie zwolniona po wywołaniu delete na f. Pamięć zarezerwowana dla obiektu g zostanie zwolniona jak wyjdzie on z zasięgu. Zwolnienie pamięci na którą wskazuje f nie wpływa na obiekt g.

0

Nie wiedziałem że konstruktor kopiujący zostanie użyty przy tej operacji. W takim razie dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1