Поиск…


Вступление

Дополнительные примеры того, как 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