Operatori di casting C ++
Un cast è un operatore speciale che forza la conversione di un tipo di dati in un altro. Come operatore, un cast è unario e ha la stessa precedenza di qualsiasi altro operatore unario.
Il cast più generale supportato dalla maggior parte dei compilatori C ++ è il seguente:
(type) expression
Dove tipo è il tipo di dati desiderato. Ci sono altri operatori di casting supportati da C ++, sono elencati di seguito:
const_cast<type> (expr)- L'operatore const_cast viene utilizzato per sovrascrivere esplicitamente const e / o volatile in un cast. Il tipo di destinazione deve essere lo stesso del tipo di origine tranne per l'alterazione dei suoi attributi const o volatili. Questo tipo di casting manipola l'attributo const dell'oggetto passato, da impostare o da rimuovere.
dynamic_cast<type> (expr)- Il dynamic_cast esegue un cast runtime che verifica la validità del cast. Se non è possibile eseguire il cast, il cast fallisce e l'espressione restituisce null. Un dynamic_cast esegue cast su tipi polimorfici e può lanciare un puntatore A * in un puntatore B * solo se l'oggetto a cui si punta è effettivamente un oggetto B.
reinterpret_cast<type> (expr)- L'operatore reinterpret_cast cambia un puntatore a qualsiasi altro tipo di puntatore. Consente inoltre il casting dal puntatore a un tipo intero e viceversa.
static_cast<type> (expr)- L'operatore static_cast esegue un cast non polimorfico. Ad esempio, può essere utilizzato per eseguire il cast di un puntatore di una classe base in un puntatore di una classe derivata.
Tutti gli operatori di casting sopra menzionati verranno utilizzati mentre si lavora con classi e oggetti. Per ora, prova il seguente esempio per comprendere un semplice operatore cast disponibile in C ++. Copia e incolla il seguente programma C ++ nel file test.cpp e compila ed esegui questo programma.
#include <iostream>
using namespace std;
main() {
double a = 21.09399;
float b = 10.20;
int c ;
c = (int) a;
cout << "Line 1 - Value of (int)a is :" << c << endl ;
c = (int) b;
cout << "Line 2 - Value of (int)b is :" << c << endl ;
return 0;
}
Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:
Line 1 - Value of (int)a is :21
Line 2 - Value of (int)b is :10