Zoeken…


Invoering

Meer voorbeelden over hoe C ++ fout kan gaan.

Voortzetting van ongedefinieerd gedrag

Verwijzend naar niet-statische leden in initialisatielijsten

Verwijzen naar niet-statische leden in initialisatielijsten voordat de constructor is begonnen met uitvoeren, kan leiden tot ongedefinieerd gedrag. Dit komt omdat niet alle leden op dit moment zijn gebouwd. Uit het standaardontwerp:

§12.7.1: Voor een object met een niet-triviale constructor leidt verwijzing naar een niet-statisch lid of basisklasse van het object voordat de constructor met de uitvoering begint, tot ongedefinieerd gedrag.

Voorbeeld

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow