Digamos que tenemos la clase X con el constructor definido X(int value)
.¿Diferencia en la construcción del objeto usando "X x (42)" y "X x = 42"?
¿Es semánticamente equivalente o no?
X x = 42;
X x(42);
creo aparecerá la diferencia sólo si añadimos explícita palabra clave para el constructor de X. De lo contrario compilador reducir la expresión X x = 42;
a X x(42);
Por favor, corríjanme si me equivoco.
¿Supondría eso un operador de asignación explícito? Pensé que tomaría esa ruta. Pero mi cerebro ha sido un tanto confuso. –
No, no está permitido construir un temporal. ¿Lo estás confundiendo con 'X x = X (42)'? – Pubby
@Pubby: Sí, así es, esto se conoce como _copy initialization_ por alguna razón. ; -] Aunque en la práctica, siempre se eliminará. – ildjarn