Salve a tutti è il mio primo post qui
iniziamo con una domanda facile facile:
diciamo che ho una classe Base e una classe Derivata che eredita dalla base, e per entrambe ho scritto costruttori e distruttori.
se io in una Terza classe dichiaro un membro
Base* pBase;
e nel costruttore della terza classe lo inizializzo così:
pBase = new Derivata();
e nel distruttore lo distruggo cosi':
delete pBase;
Ora, quando nel main dichiaro
Terza terza;
viene eseguito il costruttore della classe Terza -
in cui viene creato il puntatore pBase e viene eseguito quindi il costruttore della classe Base;
e infine quello della classe Derivata (poichè è creato attraverso new Derivata).
e ok.
Quando l'oggetto terza viene distrutto, viene eseguito il distruttore:
- della classe Base (visto che è pBase è un puntatore di tipo Base*)
- quello della classe Terza
ed in effetti il distruttore di Derivata non viene mai eseguito! Poichè appunto pBase è dichiarato di tipo Base* (ma è effettivamente inizializzato come Derivata).
Ordunque... io ho bisogno di avere un puntatore a questo oggetto, che potrebbe essere appartenente a una qualsiasi delle classi che derivano da Base.
Immagino che sia un problema il fatto di non poter distruggere eventuali puntatori che siano dichiarati nelle classi derivate. Oppure vengono distrutti automaticamente? Oppure come si fa in questi casi?