Мы все понимаем, что указатель (и другие типы POD) должен быть инициализирован.
Тогда возникает вопрос «кто должен их инициализировать».
Ну, есть два основных метода:
- Компилятор их инициализирует.
- Разработчик инициализирует их.
Предположим, что компилятор инициализировал любую переменную, явно не инициализированную разработчиком. Затем мы сталкиваемся с ситуациями, когда инициализация переменной была нетривиальной, и причина, по которой разработчик не сделал этого в точке объявления, заключалась в том, что он / она должен был выполнить какую-то операцию, а затем назначить.
Итак, теперь у нас есть ситуация, когда компилятор добавил в код дополнительную инструкцию, которая инициализирует переменную в NULL, а затем добавляется код разработчика, чтобы выполнить правильную инициализацию. Или при других условиях переменная потенциально никогда не используется. Многие разработчики на C ++ будут кричать о фолах в обоих случаях за счет этой дополнительной инструкции.
Дело не только во времени. Но и космос. Существует множество сред, в которых оба ресурса стоят дорого, и разработчики не хотят сдаваться.
НО : Вы можете смоделировать эффект принудительной инициализации. Большинство компиляторов предупредит вас о неинициализированных переменных. Поэтому я всегда переключаю свой уровень предупреждения на максимально возможный уровень. Затем скажите компилятору обрабатывать все предупреждения как ошибки. В этих условиях большинство компиляторов генерируют ошибку для переменных, которые не инициализированы, но используются и, таким образом, предотвращают генерирование кода.