Ciao a tutti,
non riesco a capire la differenza tra lo static_Cast e il dynamic_Cast nel caso dell'ereditarietà.
Tutti e due controllano il tipo dinamico a run-time per un safe cast, ma alla fine la differenza qual'è?
Grazie!
Ereditarieta', static_cast e dynamic_cast
Re: Ereditarieta', static_cast e dynamic_cast
Riguardando gli appunti di un corso di C++ ho trovato che

- static_cast : non effettua controllo di compatibilità a runtime e non può convertire tra loro classi base; puoi passare dalla classe derivata alla classe base
- dynamic_cast: effettua controllo e genera eccezioni in caso di incompatibilità; puoi passare da una classe base virtuale ad una derivata (può essere usato per passare da una classe (con ereditarietà multipla) ad una delle classi base...
Re: Ereditarieta', static_cast e dynamic_cast
Mhh...no mi sa che hai sbagliato a prendere appunti perché static_cast può effettuare conversioni dalla base alla derivata, se soddisfa la condizione al tipo dinamico 
Dynamic_cast non lancia eccezioni, semplicemente se non va' a buon fine, restituisce 0
Dynamic_cast non lancia eccezioni, semplicemente se non va' a buon fine, restituisce 0
Re: Ereditarieta', static_cast e dynamic_cast
Guarda ti incollo cosa c'è scritto sulle dispense..
Per il dynamic_cast
Quello che sicuramente non puoi fare è convertire classi base tra loro con lo static_cast; probabilmente il "verticale" intende nei due sensi, sia base-derivata che derivata-base, però non hai alcun controllo di compatibilità a run-time ...static_cast(p)
...
Non può convertire tra loro classi di base
Permette solo conversioni “in verticale” lungo l’asse ereditario
Per il dynamic_cast
Spero che così sia un po' più chiaroEffettua controllo di compatibilità run-time assicurando cast sicuri tra tipi di classi
Applicato a un puntatore ritorna 0 se il cast non è valido
Applicato a un riferimento genera un’eccezione in caso di incompatibilità
Può effettuare il “downcast” da una classe virtuale di base ad una derivata
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti
