Не попадает в точку.
должаю слышать, как люди говорят о том, как ненулевые ссылочные типы могут решить множество ошибок и значительно упростить программирование. Даже создатель нуля называет это своимошибка в миллиард долларов, а такжеSpec # ввел ненулевые типы для борьбы с этой проблемой.
РЕДАКТИРОВАТЬ: Не обращайте внимания на мой комментарий о Spec #. Я неправильно понял, как это работает.
РЕДАКТИРОВАТЬ 2: Должно быть, я говорю не с теми людьми, я действительно надеялся, что кто-то поспорит :-)
Так что я думаю, находясь в меньшинстве, что я не прав, но я не могу понять, почему эта дискуссия имеет какое-то значение. Я вижу ноль как инструмент для поиска ошибок. Учтите следующее:
class Class { ... }
void main() {
Class c = nullptr;
// ... ... ... code ...
for(int i = 0; i < c.count; ++i) { ... }
}
BAM! Нарушение доступа. Кто-то забыл инициализироватьc
.
Теперь рассмотрим это:
class Class { ... }
void main() {
Class c = new Class(); // set to new Class() by default
// ... ... ... code ...
for(int i = 0; i < c.count; ++i) { ... }
}
Упс. Цикл молча пропускается. Это может занять некоторое время, чтобы отследить проблему.
Если ваш класс пуст, код в любом случае потерпит неудачу. Почему бы системе не сказать вам (хотя и немного грубо) вместо того, чтобы выяснить это самостоятельно?