2011-03-06 9 views
16

Duplicar posibles:
Do the parentheses after the type name make a difference with new?No usar paréntesis en la llamada al constructor con el nuevo (C++)

Así que tenía en mi principal:

Class* pC = new Class; 

Se trabajaba como

Class* pC = new Class(); 

Me di cuenta hoy que había omitido el paréntesis (por lo que fui golpeado por el "opuesto" del análisis más irritante de alguna manera).

Mi pregunta: ¿Son estas dos formas equivalentes?

+0

Ambas llamadas invocan el constructor predeterminado. –

Respuesta

40

Si la clase tiene un constructor predeterminado definido, ambos son equivalentes; el objeto se creará llamando a ese constructor.

Si la clase solo tiene un constructor predeterminado implícito, entonces hay una diferencia. El primero dejará sin inicializar ningún miembro del tipo POD; el segundo los inicializará en valor (es decir, los establecerá en cero).

+7

+1, no sabía acerca de esta diferencia. –

Cuestiones relacionadas