C++
Более неопределенное поведение в C ++
Поиск…
Вступление
Дополнительные примеры того, как C ++ может пойти не так.
Продолжение от неопределенного поведения
Ссылаясь на нестатические элементы в списках инициализаторов
Ссылаясь на нестатические элементы в списках инициализаторов до того, как конструктор начал выполнение, может привести к неопределенному поведению. Это связано с тем, что в это время не все члены построены. Из стандартного проекта:
§12.7.1. Для объекта с нетривиальным конструктором, ссылаясь на любой нестатический член или базовый класс объекта перед тем, как конструктор начинает выполнение, приводит к неопределенному поведению.
пример
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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow