MEC++: Il cast alla C++

Appunti tratti dalla rilettura di More Effective C++ di Scott Meyers. Primo blocco: Fondamentali.

(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