Недавно я исправил ошибку в моем приложении: проблема заключалась в том, что объект, который находится в стеке, оставил поле неинициализированным.Правила для инициализации неявных полей
Объект имел объявление класса этого типа:
struct A{
int somefield, someotherfield;
A(): someotherfield(0) {}
}
и при объявлении локальной переменной (например, A var;
в функции), somefield
осталось инициализирована, а поэтому чтение из него будет возвращать randomish стоимость.
Я был уверен, что поля класса, которые не отображаются в списке инициализации конструктора, всегда будут инициализироваться синтезированным тривиальным конструктором (в случае int, нулевого значения). Очевидно, я ошибаюсь.
Итак, каковы общие правила о неявной инициализации поля?
Что относительно массивов? одинаковые правила для каждого элемента? –