2012-10-02 26 views
7

El siguiente es un reparto:¿Se considera que T (x) es un elenco?

int foo = (int) somefloat; 

Sin embargo, es esta considerado un yeso?

int foo = int(somefloat); 

Más importante aún, si hay una diferencia entre los dos, ¿el código compilado resultante es diferente?

+2

No hay diferencia, de verdad. – chris

Respuesta

5

El segundo ejemplo a menudo se denomina molde de estilo de función y se agregó a C++ pero no hay diferencia entre los dos en términos de semántica/código de objeto.

Aquí hay una buena explicación de la razón por la que la función se añadieron moldes estilo:

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

+0

Cool. ¡gracias por esto! – MarkP

2

No hay ninguna diferencia del resultado, sin embargo sólo el primer ejemplo, se puede utilizar en C. En C++ se puede utilizar tanto .

+0

¿El segundo todavía se consideraría un elenco de estilo C? – MarkP

+0

@MarkP segundo es C++, en c terminará con error. – Zaffy

+0

@MarkP Sí, sigue siendo un elenco estilo C con todas sus desventajas. – xaizek

1

Sí, esto también es un elenco. C++ habilita este estilo de fundición, C solo tiene moldes de formato (type)expression. Ellos son equivalentes.

Cuestiones relacionadas