C++
Altri comportamenti non definiti in C ++
Ricerca…
introduzione
Altri esempi su come C ++ può andare storto.
Continuazione da comportamento indefinito
Riferendosi a membri non statici negli elenchi di inizializzatori
Il riferimento a membri non statici negli elenchi di inizializzatori prima che il costruttore abbia iniziato l'esecuzione può provocare un comportamento indefinito. Questo risulta dal momento che non tutti i membri sono costruiti in questo momento. Dalla bozza standard:
§12.7.1: per un oggetto con un costruttore non banale, facendo riferimento a qualsiasi membro non statico o classe base dell'oggetto prima che il costruttore inizi l'esecuzione, si ottiene un comportamento non definito.
Esempio
struct W { int j; };
struct X : public virtual W { };
struct Y {
int *p;
X x;
Y() : p(&x.j) { // undefined, x is not yet constructed
}
};
Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow