Sök…


Introduktion

Fler exempel på hur C ++ kan gå fel.

Fortsättning från odefinierat beteende

Med hänvisning till icke-statiska medlemmar i initialiseringslistor

Att hänvisa till icke-statiska medlemmar i initialiseringslistor innan konstruktören har börjat köra kan resultera i odefinierat beteende. Detta resulterar i att inte alla medlemmar är konstruerade just nu. Från standardutkastet:

§12.7.1: För ett objekt med en icke-trivial konstruktör, med hänvisning till alla icke-statiska element eller basklasser för objektet innan konstruktören börjar körning, resulterar i odefinierat beteende.

Exempel

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow