Dynamic_Cast C++

Dynamic Cast C



Il cast dinamico nel linguaggio di programmazione C++ sarà discusso in questo articolo. Per cominciare, dobbiamo comprendere la nozione di casting e molti tipi di casting. Il processo di alterazione del tipo di dati di una variabile è noto come casting. Il casting è diviso in due categorie nel linguaggio di programmazione C++: casting implicito e casting esplicito.

Conversione del tipo di dati in C++:

Il casting del tipo è la procedura per modificare il tipo di dati in un altro tipo di dati. Esistono due tipi di casting o conversione di tipo nel linguaggio di programmazione C++: casting implicito ed esplicito. La conversione automatica del tipo è un altro nome per il typecasting implicito. Viene eseguito dal compilatore durante la compilazione in tempo reale e non richiede alcun input o azione da parte dell'utente. Quando ci sono due tipi di tipi di dati in un'espressione, si verifica questa forma di casting. Per esempio:

  Interfaccia utente grafica, testo, descrizione dell'applicazione generata automaticamente







Nel codice dato, possiamo vedere che una variabile intera e una variabile carattere sono inserite nell'ultima riga dell'espressione e il valore della variabile intera 'i' viene modificato. Il numero ASCII equivalente a 'a' verrà convertito in un valore di carattere e aggiunto al valore intero della variabile 'i' in questa istruzione. Se viene stampato il valore della variabile “i”, il risultato sarà un totale di entrambi questi valori. Il compilatore trasforma automaticamente il tipo di dati della variabile carattere in un tipo di dati intero convertendolo nel valore standard ASCII dell'alfabeto a destra, che è un ottimo esempio di conversione di tipo implicita o automatizzata in fase di esecuzione.



Ora, quando si tratta di casting di tipo esplicito o conversione di tipo, non è un processo automatizzato; l'utente deve convertire manualmente un tipo di dati di una variabile in un altro tipo di variabile nel codice. I tipi di dati sono generalmente organizzati in una gerarchia basata sul loro spazio di memoria e sulla quantità di informazioni che possono contenere. Quindi, quando un tipo di dati di ordine inferiore viene utilizzato per archiviare qualsiasi informazione ma deve essere trasformato in un tipo di dati di ordine superiore in modo da ridurre al minimo la perdita di informazioni e memorizzare sempre più informazioni, il casting esplicito del tipo o la conversione del tipo è comunemente fatto. Ad esempio, poiché una variabile di tipo intero non può memorizzare valori dopo la virgola decimale, potremmo perdere alcune informazioni se continuiamo a utilizzare variabili intere. Per evitare questa perdita, convertiamo la variabile intera in una variabile float, salvando i valori dopo i punti decimali e prevenendo la perdita di informazioni. La conversione esplicita del tipo nel linguaggio di programmazione C++ può essere eseguita in due modi: tramite assegnazione o utilizzando l'operatore cast. La conversione dell'assegnazione viene eseguita in un'espressione di codice e la sintassi per questa espressione è fornita di seguito.



# 'espressione (tipo di dati)'

Nel codice precedente, dobbiamo inserire un tipo di dati valido all'interno della parentesi e, dopo la parentesi, dobbiamo scrivere la variabile o l'espressione che desideriamo modificare nel tipo di dati scritto all'interno della parentesi.





Ora esamineremo il tipo di conversione eseguita dagli operatori cast nel linguaggio di programmazione C++. Gli operatori di cast sono anche chiamati operatori unari che forzano una variabile a cambiare il suo tipo di dati da uno esistente a un altro. Esistono quattro tipi di operatori cast di cast: Cast statico, Cast dinamico, Cast costante e Cast reinterpretato.

Casting dinamico in C++:

Il casting dinamico nel linguaggio di programmazione C++ si basa su un concetto chiamato RTTI (Run Time Type Identification). RTTI è una funzione presente in diversi linguaggi di programmazione come C/C++, Ada e Object Pascal. L'identificazione o informazione del tipo di runtime è una funzione che identifica ed estrae le informazioni relative ai dettagli del tipo di dati di un oggetto durante l'esecuzione di un programma. Questa funzione fornisce un percorso sicuro per i metodi di casting del tipo come la funzione 'typeid' o il casting dinamico del tipo. Rileva le informazioni sul tipo di dati sul tempo di esecuzione e assiste la conversione del tipo di dati quando gli operatori sono in gioco.



Il casting dinamico viene utilizzato principalmente in C++ per il downcast sicuro in fase di esecuzione. Per lavorare con il cast dinamico, la classe base deve avere 1 funzione virtuale. Il cast dinamico funziona solo con classi di base polimorfiche perché utilizza queste informazioni per determinare il downcast sicuro. Un operatore di cast dinamico esegue il casting dinamico. Ora che conosciamo i concetti relativi al casting dinamico, possiamo passare alla parte implementativa. Diamo prima un'occhiata alla sintassi per l'utilizzo del casting dinamico nel linguaggio di programmazione C++, che è scritto di seguito:

# 'dynamic_cast (Espressione)'

Nell'espressione precedente, la prima parte descrive il nome dell'operatore; nelle parentesi angolari scriviamo il nome del tipo di dati in cui dobbiamo convertire la nostra espressione e nelle parentesi tonde scriviamo il nome della variabile o dell'oggetto che vogliamo convertire.

Ora che sappiamo come utilizzare l'operatore di cast dinamico e inserire i parametri per convertire i tipi di dati delle variabili, possiamo usarlo per convertire i tipi di dati delle variabili.

Utilizzando il metodo di cast dinamico in Ubuntu 20.04:

Per implementare questo concetto, dobbiamo utilizzare diverse classi con cui lavorare per convertire gli oggetti della classe per ereditarietà. Quindi, per farlo prima, dobbiamo prima sapere che il file del programma C++ nell'ambiente Ubuntu è memorizzato con l'estensione '.cpp', quindi per creare questo file sul nostro desktop, apri un terminale e digita 'cd Desktop' sul riga di comando, quindi premere Invio e digitare 'touch filename .cpp' per creare un file con estensione '.cpp'. Ora scriveremo un codice in quel file per creare una classe base e 2 classi derivate, e nel codice del driver useremo l'operatore di cast dinamico.

  Interfaccia utente grafica, testo Descrizione generato automaticamente

Uscire dal file dopo aver fatto clic sul pulsante Salva. Ritorna al terminale e crea il file usando il comando 'g++' con il nome del tuo file e l'estensione '.cpp'. Utilizzando questo comando verrà creato un file con estensione '.out'. Ora puoi eseguire quel file inserendo './' seguito dall'estensione '.out'.
  Testo Descrizione generata automaticamente

In questo programma, il puntatore della classe base memorizza gli oggetti di classe 1 derivati ​​(d1). La classe di base del casting dinamico, il puntatore ha mantenuto l'oggetto Derived1 e lo ha assegnato alla classe derivata 1, che ha fornito un casting dinamico valido.

Conclusione :

Questo articolo ci ha insegnato il metodo di casting del tipo utilizzato nel linguaggio di programmazione C++. Anche il tipo di casting è stato discusso in dettaglio e ci siamo concentrati sulla necessità di utilizzare tali metodi nella programmazione C++. Abbiamo discusso la funzione di assistenza che aiuta la conversione del tipo di dati della variabile recuperando informazioni e verificando la corretta conversione chiamata RTTI. Abbiamo anche implementato il concetto di casting dinamico utilizzando l'operatore di cast dinamico in un'espressione nel linguaggio di programmazione C++ nell'ambiente Ubuntu 20.04.