C++
Mer odefinierat beteende i C ++
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