Re[13]: Вот я не понимаю...
От: Стэн http://stanonwork.blogspot.com/
Дата: 30.08.07 19:35
Оценка:
Здравствуйте, rsn81, Вы писали:

R>Здравствуйте, Стэн, Вы писали:


С>>Не прав в чем? Например, что в Delphi одна из самых распространенных ошибок Access Violation (по нулевому адресу)? И это именно из-за того, что каждый объект должен создаваться динамически во время работы программы и на этапе компиляции нет возможности проверить — будет ли создан объект или нет.

R>А где это можно достоверно определить на этапе компиляции? Скажем, в Java/.NET конструктор может пробросить исключение, это единственный доступный конструктору способ "отказаться от создания объекта". Или я не о том?

С>>Про Java у меня меньше знаний, но вопрос: если у класса в Java два конструктора с параметрами, то вызов какого из них будет сделан за программиста?

R>Вопрос не понял. Отвечаю, как понял: никакого.

Все началось вот с этого:
>>> Java программы падают от null-евых ссылок чаще, чем C++ные
Так вот, в C++ если переменная объявлена как объект, а не как указатель на объект, то компилятор гарантирует, что объект будет инициализирован. Т.е. во время работы программы будет вызван соответствующий конструктор. Если программист указал параметры неправильного типа, либо нет подходящего конструктора, то будет ошибка времени компиляции. А еще у C++-ников есть привычка все указатели на объект заключать в какой-нибудь smart_ptr...
В результете всего получается, что в программах на C++ кол-во указателей на объекты гараздо меньше чем на Java, а за теми, которые есть, следят более пристально... Отсюда и статистика падений по null-ссылкам не в пользу Java...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.