2012-06-28 20 views
12

Nel codice seguente:In C++, è un costruttore con solo argomenti predefiniti un costruttore predefinito?

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

Fa il costruttore conta come un costruttore di default?

+1

Il costruttore predefinito viene generato automaticamente dal compilatore quando non ne viene definito uno. Quindi direi di no, non è perché lo hai definito – peacemaker

+3

@peacemaker in realtà, un costruttore predefinito è un costruttore senza argomenti – Matt

+2

@peacemaker: Stai confondendo come predefinito in "fornito di default" con impostazione predefinita come in " chiamato di default ". Lo standard usa il termine per riferirsi a quest'ultimo. –

risposta

18

C++ 98 §12.1/5 (enfasi mia):

Un costruttore di default per una classe X è un costruttore di X che può essere chiamato senza argomenti. Se non esiste un costruttore dichiarato dall'utente per la classe X, un costruttore predefinito viene dichiarato implicitamente.

Quindi sì, conta come un costruttore predefinito. See also.

+0

Pensavo di averlo letto da qualche parte una volta. Grazie per il chiarimento. – chris

+0

Grazie! Non sapevo che c'è una differenza. – panickal

+2

@panickal Vale la pena notare che l'esempio è anche un costruttore di conversioni e contiene ancora conversioni implicite. –

Problemi correlati