Salve,
come potrete ben notare questo è il mio primo post, e spero che non sia l'ultimo (sperano che siano di risposte e non di domande ).

Comunque sto studiando in C++ grazie a un libro che ho comprato. Proprio studiando arrivato al capitolo dell'ereditarietà, in particolare il paragrafo che parla del cast di puntatori a una classe base in una classe derivata, mi è venuto un piccolo dubbietto.

Leggendo il libro riporta che una conversione di un puntatore a una classe base, rendendolo puntatore a una classe derivata, non si potrebbe usare per riferire membri della classe derivata che non esistono nella classe base. Nel caso ciò avvenga si verificheranno errori logici durante l'esecuzione.

Non contento solo di leggere, ho buttato un paio di righe di codice dove trasformo il puntatore PTR alla classe Padre in un puntatore ad una classe Figlio (derivata in modo public dalla classe Padre). A questo punto provo a usare PTR riferendosi a metodi non presenti nella classe PADRE. Salvo, compilo e mi da degli errori su questi metodi. La mia domanda: non dovrebbe compilare lo stesso e poi una volta avviato il programma comportarsi in modo strano?
Inoltre leggendo alcuni esempi dal libro vedo che il PTR , inizialmente è un puntatore alla classe Padre ma gli viene assegnato subito un indirizzo ad una variabile della classe Figlio e usando l'operatore << (ovviamente implementato nella classe Figlio) mostra come nell'output venga mostrato solo le parti presenti in Padre.

Ora può darsi che non abbia capito bene e stia dicendo stelle per stalle.
Spero che qualcuno abbia capito ciò che ho scritto e sia così gentile aiutarmi a risolvere questo mio dubbio.

Grazie =)