Усі ми розуміємо, що вказівник (та інші типи POD) слід ініціалізувати.
Тоді стає питання "хто повинен їх ініціалізувати".
Ну є в основному два методи:
- Компілятор ініціалізує їх.
- Розробник ініціалізує їх.
Припустимо, що компілятор ініціалізував будь-яку змінну, явно не ініціалізовану розробником. Тоді ми стикаємося з ситуаціями, коли ініціалізація змінної була нетривіальною, і причиною, яку розробник не робив цього в деклараційному пункті, було те, що йому / їй потрібно виконати якусь операцію, а потім призначити.
Отже, у нас виникла ситуація, що компілятор додав до коду додаткову інструкцію, яка ініціалізує змінну до NULL, потім пізніше додається код розробника, щоб зробити правильну ініціалізацію. Або за інших умов змінна потенційно ніколи не використовується. Багато розробників на C ++ прикриваються при обох умовах ціною додаткової інструкції.
Справа не лише в часі. Але і простір. Є багато середовищ, де обидва ресурси переважають, і розробники не хочуть відмовлятися і від них.
АЛЕ : Ви можете імітувати ефект примусової ініціалізації. Більшість компіляторів попередить вас про неініціалізовані змінні. Тому я завжди перетворюю свій попереджувальний рівень на найвищий можливий рівень. Потім скажіть компілятору, щоб всі попередження розглядалися як помилки. За цих умов більшість компіляторів буде генерувати помилку для змінних, які не ініціалізуються, але використовуються, і, таким чином, не дозволять створювати код.