Dynamic_cast C ++

Dynamic_cast C ++
Il cast dinamico nel linguaggio di programmazione C ++ sarà discusso in questo articolo. Per iniziare, dobbiamo capire la nozione di casting e molti tipi di casting. Il processo di modifica 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 ++:

La fusione del tipo è la procedura per alterare il tipo di dati in qualche altro tipo di dati. Esistono due tipi di conversione di casting o tipo nel linguaggio di programmazione C ++: casting implicito ed esplicito. La conversione del tipo automatizzato è un altro nome per il tipografia implicita. Viene eseguito dal compilatore durante la compilation in tempo reale e non ha bisogno di input o azione dell'utente. Quando ci sono due tipi di tipi di dati in un'espressione, si verifica questa forma di casting. Per esempio:

Nel codice dato, possiamo vedere che una variabile intera e una variabile di carattere sono inserite nell'espressione dell'ultima riga e il valore della variabile intera "i" viene modificato. Il numero ASCII equivalente di "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 del carattere in un tipo di dati interi convertendolo nel valore standard ASCII dell'alfabeto a destra, che è un ottimo esempio di conversione implicita o automatizzata di tipo nel tempo di esecuzione.

Ora, quando si tratta di casting di tipo esplicito o conversione del 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 disposti in una gerarchia in base allo spazio di memoria e alla quantità di informazioni che possono contenere. Pertanto, quando viene utilizzato un tipo di dati di ordine inferiore per archiviare qualsiasi informazione ma deve essere trasformato in un tipo di dati di ordine superiore in modo che la perdita di informazioni possa essere ridotta al minimo e più e più informazioni possono essere archiviate, la casting di tipo esplicita o la conversione del tipo è comunemente Fatto. Ad esempio, poiché una variabile di tipo intero non può archiviare i valori dopo il punto decimale, potremmo perdere alcune informazioni se continuiamo a utilizzare le variabili interi. Per evitare questa perdita, convertiamo la variabile intera in una variabile float, salvando i valori dopo punti decimali e prevenendo la perdita di informazioni. La conversione di tipo esplicita nel linguaggio di programmazione C ++ può essere eseguita in due modi: tramite l'assegnazione o utilizzando l'operatore del cast. La conversione dell'assegnazione viene eseguita in un'espressione del codice e la sintassi per questa espressione è fornita di seguito.

# "(Tipo di dati) espressione"

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

Ora esamineremo il tipo di conversione effettuata dagli operatori del cast nel linguaggio di programmazione C ++. Gli operatori del cast sono anche chiamati operatori unari che costringono una variabile a modificare il suo tipo di dati da uno esistente a un altro. Esistono quattro tipi di operatori del cast: cast statico, cast dinamico, const cast e reinterpretazione del cast.

Casting dinamico in C ++:

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

Il casting dinamico è principalmente utilizzato in C ++ per il casting di cassaforte in rotta. Per lavorare con il cast dinamico, la classe di base deve avere 1 funzione virtuale. Il cast dinamico funziona solo con le classi di base polimorfica perché utilizza queste informazioni per determinare la casting in sicurezza. Un operatore di cast dinamico esegue il casting dinamico. Ora che sappiamo dei concetti relativi al casting dinamico, possiamo andare verso la parte di implementazione. Per prima cosa diamo un'occhiata alla sintassi per l'utilizzo del casting dinamico nel linguaggio di programmazione C ++, che è scritto di seguito:

# "Dynamic_cast (espressione)"

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

Ora che sappiamo come utilizzare l'operatore di cast dinamico e compilare i parametri per la conversione dei tipi di dati di variabili, possiamo usarlo per convertire i tipi di variabili di dati.

Utilizzando il metodo del cast dinamico in Ubuntu 20.04:

Per implementare questo concetto, dobbiamo usare diverse classi con cui lavorare per convertire gli oggetti della classe per eredità. Quindi, per farlo prima, dobbiamo prima sapere che il file di programma C ++ nell'ambiente Ubuntu è archiviato con l'estensione ".CPP ", pertanto per creare questo file sul nostro desktop, aprire un terminale e digitare" CD desktop "sulla riga di comando, quindi premere Invio e digitare" Tocca fileName .CPP "per creare un file con il".Estensione CPP ". Ora scriveremo un codice in quel file per creare una classe di base e 2 classi derivate e nel codice del driver, useremo l'operatore di cast dinamico.

Esci dal file dopo aver fatto clic sul pulsante Salva. Torna al terminale e crea il file utilizzando il comando "G ++" con il nome del file e ".Estensione CPP ". Un file con l'estensione ".out ”verrà creato usando questo comando. Ora puoi eseguire quel file inserendo "./"Seguito dal tuo".estensione fuori ".

In questo programma, i puntatori di classe base archiviano oggetti di classe 1 derivati ​​(D1). La classe di base di fusione dinamica, il puntatore ha mantenuto l'oggetto Derited1 e lo ha assegnato alla classe 1 derivata, che ha fornito una valida casting dinamico.

Conclusione:

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