(2) Meglio usare il cast alla C++
É ancora possibile usare il cast come definito in C:
(tipo) espressione
Ma é meglio non farlo. Anche solo per il fatto che é praticamente impossibile ritrovare nel codice dove si é fatto un cast, usando questa notazione.
In C++ sono definiti quattro nuovi operatori per il cast: static_cast, const_cast, dynamic_cast e reinterpret_cast.
Il cast più comunemente usato é static_cast che permette, ad esempio, di convertire un intero in un double.
Dove in C si faceva così:
int firstNumber, secondNumber;
// ...
double result = ((double)firstNumber)/secondNumber;
In C++ si preferisce scrivere:
double result = static_cast(firstNumber)/secondNumber;
Per richiede il bypass dell'indicazione di costanza per un oggetto si usa const_cast.
L'operatore dynamic_cast é usato per fare downcast sicuri in una gerarchia di classi. Se il cast fallisce si ha un NULL (nel caso di puntatori) o una eccezione (per le reference).
Usare il dynamic_cast in una situazione in cui non é coinvolta una gerarchia di classi conduce ad un errore.
Infine reinterpret_cast ci permette di fare tutto quello che vogliamo: é nostra responsabilità di programmatore che il risultato di questo cast sia sensato.
Nessun commento:
Posta un commento