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