Suche…


Einführung

Weitere Beispiele, wie C ++ schief gehen kann.

Fortsetzung von undefiniertem Verhalten

Verweise auf nicht statische Member in Initialisierungslisten

Verweise auf nicht statische Member in Initialisierungslisten, bevor der Konstruktor mit der Ausführung begonnen hat, kann zu undefiniertem Verhalten führen. Dies ergibt sich, da nicht alle Mitglieder zu diesem Zeitpunkt aufgebaut sind. Aus dem Standardentwurf:

§12.7.1: Bei einem Objekt mit einem nicht trivialen Konstruktor führt der Verweis auf ein nicht statisches Member oder eine beliebige Basisklasse des Objekts, bevor der Konstruktor mit der Ausführung beginnt, zu undefiniertem Verhalten.

Beispiel

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow