migliorabile ha scritto:
La cosa si complica in C++ perche' OLTRE a metodi virtuali (definiti mediante la keyword "virtual") ci sono anche i NORMALI metodi che DIPENDONO dalla struttura dati a cui fa riferimento IL TIPO DI PUNTATORE, E NON dal TIPO dell'oggetto PUNTATO!!!! E questo e' ESATTAMENTE il tuo caso!
Grazie per la conferma, mi sono letto molta documentazione in proposito ma immagino non sia ancora sufficiente quindi sono passato al pratico facendo dei test in C++ ... però mi sfugge ancora un concetto:
la famosa variabile 'a' che si è ribellata al programmatore e lo sta tenendo in ostaggio per gli argomenti successivi!
Ok che l'utilizzo delle funzioni virtuali ti permette di richiamare un metodo in base al tipo di oggetto puntato (se non erro si parla quindi di polimorfismo) ma come dice anche tu il mio caso non usa funzioni virtuali, quindi il metodo richiamato dipende dal tipo di puntatore.
Il mio dilemma è l'accesso al valore di
a. Se viene richiamato il metodo Persona::stampa() perchè il valore stampato è 99 se questo valore è relativo a Studente::a ?
Quali dei link indicati devo leggere più approfonditamente per trovare la risposta?