2012-10-02 12 views
7

Quello che segue è un cast:T (x) è considerato un cast?

int foo = (int) somefloat; 

Tuttavia, è questo considerato un cast?

int foo = int(somefloat); 

Ancora più importante, se v'è una differenza tra i due, è il codice risultante compilato diverso?

+2

Nessuna differenza, davvero. – chris

risposta

5

Il secondo esempio è spesso chiamato cast di uno stile di funzione ed è stato aggiunto a C++ ma non c'è differenza tra i due in termini di semantica/codice oggetto.

Ecco una buona spiegazione del motivo che funzionano sono stati aggiunti calchi stile:

What exactly is or was the purpose of C++ function-style casts?

+0

Fresco. grazie per questo! – MarkP

2

Non c'è differenza di risultato, ma solo primo esempio può essere utilizzato in C. In C++ è possibile utilizzare sia .

+0

Il secondo sarebbe ancora considerato un cast in stile C? – MarkP

+0

@MarkP secondo è C++, in c si termina con errore. – Zaffy

+0

@MarkP Sì, è ancora un cast in stile C con tutti i suoi svantaggi. – xaizek

1

Sì, questo è anche un cast. C++ abilita questo stile di casting, C ha solo cast di formato (type)expression. Sono equivalenti.

Problemi correlati