Обложка канала

Sea++

Канал об интересных материалах из мира C/C++, Python, Go, Linux и не только. Новости, заметки, полезные советы и многое другое.

Sea++

6 лет назад
Открыть в
Default initialization — ответ

English version: https://telegra.ph/Default-initialization--answer-01-30

Как вы уже наверное поняли, ответ другой.

Поскольку конструктор для Foo объявлен по умолчанию, он не является user-provided. Это означает, что Foo является агрегатным типом, а f.v инициализируется нулями. Однако Bar имеет пользовательский конструктор, хотя и созданный компилятором как конструктор по умолчанию. Поскольку этот конструктор не инициализирует явно Bar::v, b.v небезопасен для чтения, неопределенное поведение.