Size: a a a

2021 July 13

D

Danya in supapro.cxx
То, что нарушается порядок инициализации мемберов
Или мб bar не инициализирован до начала конструктора и я буду вызывать operator= на мертвом объекте
источник

АК

Александр Караев... in supapro.cxx
Выглядит очень нелегально
источник

АК

Александр Караев... in supapro.cxx
Логика подсказывает, что всё так и будет. В момент инициализации foo bar ещё не существует. Пруфов не будет
источник

D

Danya in supapro.cxx
Мне кажется если там есть user-provided конструкторы, то они инициализируются до конструктора, если их нет в списке инициализации
источник

LA

Liber Azerate in supapro.cxx
Так может там будет инциаилизация. Возможно просто память ещё не выделена под этот объект... Доказательств тоже никаких не будет
источник

D

Danya in supapro.cxx
Логика мне такое подсказывает
источник

АК

Александр Караев... in supapro.cxx
Память под объект выделена, но грубо говоря сырая, конструктор поля ещё не вызван
источник

LA

Liber Azerate in supapro.cxx
А откуда гарантии, что выделена? Так-то понятно, что логичнее выделять цельным куском под обьект, но всё же(может не так уж и логично, учитывая что уровнем ниже нет никаких обьектов). А если не не инициализирована, то никто же не мешает инициализировать
источник

АК

Александр Караев... in supapro.cxx
Как память под поле может быть не выделена в конструкторе объекта?
И да, инициализировать, возможно, никто не мешает, но потом инициализатор поля сделает это повторно
источник

LA

Liber Azerate in supapro.cxx
Потому что мы находимся посреди конструирования объекта? Логично, что именно эта функция выделяет память, инциализирует... Просто предположение без каких-то оснований особых на то
источник

VS

Vlad Serebrennikov in supapro.cxx
storage выделяется под complete object. не нахожу никаких подтверждений иному
источник

LA

Liber Azerate in supapro.cxx
А инициализировать поле кто-то не обязан, если мы не напишем это явно в своём конструкторе, я думаю
источник

LA

Liber Azerate in supapro.cxx
Мне кажется, стандарт в данном случае сликом высокоуровневый
источник

VS

Vlad Serebrennikov in supapro.cxx
default initialization обязательно будет
http://eel.is/c++draft/class.init#class.base.init-9.3
источник

VS

Vlad Serebrennikov in supapro.cxx
как вы предлагаете сделать и чем это поможет?
источник

VS

Vlad Serebrennikov in supapro.cxx
я вижу только усложнение объектной модели
источник

LA

Liber Azerate in supapro.cxx
Ничем не поможет, просто предположение. Если подумать, по идее, вместе или раздельно, но память будет выделена ещё в начале функции, которая создаёт объект, либо очевидно цельным куском при выделении через new. Будем считать, что я нашёл логические опровержения своему предположению
источник

LA

Liber Azerate in supapro.cxx
В целом, если подытожить, мне кажется, если в коде выше перед инициализацией bar вызвать на нёи деструктор, никаких проблем не будет
источник
2021 July 14

D

Danya in supapro.cxx
Переслано от Danya
Время тупых вопросов
источник

D

Danya in supapro.cxx
Переслано от Danya
Я под ночь не соображаю уже
источник