2012-06-28 13 views
12

En el siguiente código:En C++, ¿es un constructor con solo argumentos predeterminados un constructor predeterminado?

struct Foo 
{ 
    Foo(int x=0); 
}; 

sí cuenta el constructor como un constructor por defecto?

+1

El compilador genera automáticamente el constructor predeterminado cuando no define uno. Así que diría que no, no es porque lo haya definido – peacemaker

+3

@peacemaker en realidad, un constructor predeterminado es un constructor sin argumentos – Matt

+2

@peacemaker: está confundiendo el valor predeterminado como en "proporcionado por defecto" con el valor predeterminado como en " llamado por defecto ". El estándar usa el término para referirse a este último. –

Respuesta

18

C++ 98 §12.1/5 (énfasis mío):

un constructor predeterminado para una clase X es un constructor de X que se puede llamar sin un argumento. Si no hay un constructor declarado por el usuario para la clase X, se declara implícitamente un constructor predeterminado.

Así que sí, sí cuenta como un constructor predeterminado. See also.

+0

Creo que lo leí en alguna parte. Gracias por la aclaración. – chris

+0

Gracias! No sabía que hay una diferencia. – panickal

+2

@panickal Puede valer la pena señalar que el ejemplo también es un constructor de conversiones y aún lleva consigo conversiones implícitas. –

Cuestiones relacionadas