Eseguire il cast

Il linguaggio C++ fornisce che se una classe derivata da una classe base che contiene le funzioni virtuali, un puntatore al tipo di classe di base può essere utilizzato per chiamare le implementazioni delle funzioni virtuali che si trova nell'oggetto della classe derivata.Una classe che contiene le funzioni virtuali è detta “una classe polimorfica„.

Poiché una classe derivata completamente contiene le definizioni delle classi di base da cui deriva, è possibile eseguire il cast di un puntatore alla gerarchia di classi a queste classi base.Dato un puntatore a una classe base, potrebbe essere possibile eseguire il cast del puntatore verso il basso nella gerarchia.È certi che l'oggetto che l'utente posiziona il mouse sul diagramma di un tipo derivato dalla classe base.In questo caso, all'oggetto sarebbe “completa l'oggetto.„ Il puntatore alla classe base è detto per indicare “un sotto-oggetto„ dell'intero oggetto.Ad esempio, si consideri la gerarchia di classi illustrato nella figura che segue.

gerarchia di classi

Rappresentazione grafica della gerarchia delle classi

un oggetto di tipo C potrebbe essere visualizzato come illustrato nella figura seguente.

Classe C# con il sotto-oggetto di B e un sotto-oggetto

Classe C con sottoggetto B e sottoggetto A

Fornita un'istanza di classe C, sono disponibili B sotto-oggetto e A sotto-oggetto.l'istanza di C, inclusi A e B oggetti secondari, è “significa completare l'oggetto.„

Utilizzando informazioni di tipo in fase di esecuzione, è possibile controllare se i passaggi di un puntatore in realtà a un oggetto completo e in modo sicuro essere impostato per indicare un altro oggetto nella gerarchia.dynamic_cast l'operatore può essere utilizzato per creare questi tipi di cast.Esegue anche il controllo runtime necessaria per consentire la sicurezza dell'operazione.

Per la conversione dei tipi nonpolymorphic, è possibile utilizzare " tipo2 " operatore (in questo argomento viene illustrata la differenza tra le conversioni statiche e dinamiche cast di e è appropriato utilizzare ogni).

In questa sezione vengono trattati i seguenti argomenti:

Vedere anche

Riferimenti

Espressioni (C++)