Ho qualche dubbio sulla costruzione e sulle garanzie dell'ordine di inizializzazione in C++. Ad esempio, il codice seguente ha quattro classi X
, Y
, Z
e W
. La funzione principale istanzia un oggetto di class X
, che contiene un oggetto di class Y
e deriva da class Z
, quindi verranno richiamati entrambi i costruttori. Inoltre, il parametro const char*
passato al costruttore di X
verrà convertito implicitamente in un oggetto di class W
, pertanto è necessario chiamare anche il costruttore di W
.C++: garanzie dell'ordine di costruzione e di inizializzazione
Quali sono le garanzie fornite dallo standard C++ sull'ordine delle chiamate ai costruttori di copie? O, in modo equivalente, cosa può stampare questo programma?
modifica: è corretto?
W |
/ \ |
Z Y |
\ / |
X V
L'ordine sarà W, Z, Y, X ma non sono sicuro delle regole specifiche. –
Qual è la relazione tra Y e W? – curiousguy