Cast
Nel linguaggio C++ se una classe è derivata da una classe base che contiene funzioni virtuali, un puntatore a quel tipo della classe base può essere utilizzato per chiamare le implementazioni delle funzioni virtuali che si trovano nell'oggetto classe derivata. La classe che contiene le funzioni virtuali è talvolta detta "classe polimorfica".
Poiché una classe derivata completamente contiene le definizioni di tutte le classi di base da cui deriva, è possibile eseguire il cast di un puntatore alla gerarchia di classi a una di queste classi base. Dato un puntatore a una classe base, è possibile eseguire la riduzione del puntatore nella gerarchia. Questo è possibile se l'oggetto a cui si sta puntando è effettivamente di un tipo derivato dalla classe base. In questo caso, l'oggetto effettivo è detto "oggetto completo". Il puntatore alla classe base viene detto che punta a un "oggetto secondario" dell'oggetto completo. Si consideri ad esempio la gerarchia di classe illustrata nella figura che segue.
Gerarchia delle classi
Un oggetto di tipo C
potrebbe essere visualizzato come illustrato di seguito.
Classe C con sottoggetti B e A
Data un'istanza della classe C
, esiste un oggetto secondario B
e un oggetto secondario A
. L'istanza di C
, inclusi gli oggetti secondari A
e B
, è "l'oggetto completo".
Utilizzando le informazioni del tipo di runtime, è possibile verificare se un puntatore punti effettivamente a un oggetto completo e possa essere eseguito il cast in modo sicuro a un altro oggetto nella relativa gerarchia. L'operatore dynamic_cast può essere usato per eseguire questi tipi di cast. Esegue inoltre la verifica del runtime necessaria per rendere l'operazione sicura.
Per la conversione di tipi nonpomorfici, è possibile usare l'operatore static_cast (in questo argomento viene illustrata la differenza tra conversioni di cast statico e dinamico e quando è appropriato usarle).
Questa sezione contiene gli argomenti seguenti:
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per