Szukaj…


Wprowadzenie

Więcej przykładów tego, jak C ++ może się nie udać.

Kontynuacja od niezdefiniowanego zachowania

Odwoływanie się do elementów niestatycznych na listach inicjalizujących

Odwołanie się do elementów niestatycznych na listach inicjalizujących przed uruchomieniem konstruktora może spowodować niezdefiniowane zachowanie. Wynika to z faktu, że obecnie nie wszyscy członkowie są konstruowani. Ze standardowego projektu:

§12.7.1: W przypadku obiektu z nietrywialnym konstruktorem odwołanie się do dowolnego niestatycznego elementu lub klasy podstawowej obiektu przed rozpoczęciem wykonywania przez konstruktora powoduje niezdefiniowane zachowanie.

Przykład

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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow