4° Anno TEORIA 6. Programmazione ad oggetti: il linguaggio C++ | Page 138

Supponiamo di avere due oggetti, x un Frutto ed y una Mela appartenenti a questa gerarchia di classi utilizzata più volte nelle nostre slide.
Supponiamo di avere effettuato le due dichiarazioni seguenti: Frutto x; Mela y;
Cosa possiamo dire delle assegnazioni 1) x = y; // OK CASTING implicito 2) y = x; // NOT OK: PROBLEMI!!
Un oggetto di una classe può diventare un oggetto di un ' altra classe? La prima istruzione è più immediata, perché se y è una Mela è sicuramente un Frutto( parliamo in questo caso di CASTING implicito) Non è così scontata la seconda perché se x è un Frutto potrebbe non essere una Mela bensì un ' Arancia o un Mango. In questo caso è possibile effettuare un CASTING esplicito ossia un ' operazione che forza un oggetto di una classe a diventare oggetto di un ' altra classe a PATTO CHE ESSE SIANO SULLO STESSO RAMO DELLA GERARCHIA. E ' corretto allora scrivere così:
2) y =( Mela) x; // OK: necessario CASTING ESPLICITO

Ereditarietà: Cambio di classe per un oggetto( CASTING)

Supponiamo di avere due oggetti, x un Frutto ed y una Mela appartenenti a questa gerarchia di classi utilizzata più volte nelle nostre slide.

Supponiamo di avere effettuato le due dichiarazioni seguenti: Frutto x; Mela y;

Cosa possiamo dire delle assegnazioni 1) x = y; // OK CASTING implicito 2) y = x; // NOT OK: PROBLEMI!!

Un oggetto di una classe può diventare un oggetto di un ' altra classe? La prima istruzione è più immediata, perché se y è una Mela è sicuramente un Frutto( parliamo in questo caso di CASTING implicito) Non è così scontata la seconda perché se x è un Frutto potrebbe non essere una Mela bensì un ' Arancia o un Mango. In questo caso è possibile effettuare un CASTING esplicito ossia un ' operazione che forza un oggetto di una classe a diventare oggetto di un ' altra classe a PATTO CHE ESSE SIANO SULLO STESSO RAMO DELLA GERARCHIA. E ' corretto allora scrivere così:

2) y =( Mela) x; // OK: necessario CASTING ESPLICITO

Autore: Prof. Rio Chierego Aprile 2025