Re[15]: Вот я не понимаю...
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 31.08.07 04:26
Оценка: +1 :))) :))
Здравствуйте, mkizub, Вы писали:

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


С>>Все началось вот с этого:

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

M>Вы уж извините, но это полный бред. Никакого отношения к нулевым указателям размещение объектов в хипе или стеке отношения не имеет. И ява точно так-же, как и остальные языки, гарантирует инициализации объекта. Даже более надёжно гарантирует — в виду наличия верификатора кода. К неинициализированной локальной переменной просто не может быть обращения, в отличие от С++, где это запросто, и выдаёт в ответ бодрый мусор.

M>Ошибки NullPointerException возникают исключительно по причине передачи null в качестве аргумента метода, и null ссылки в полях классов.


class Demo {
    static public void main( String[] args )
    {
        StringBuffer buf = findAppropriateBuffer();
        for( int i = 0; i != args.length; ++i )
            buf.append( args[ i ] );
        System.out.println( buf );
    }

    static private StringBuffer findAppropriateBuffer()
    {
        return null;
    }
}


ЗЫ Теперь понятно, почему тебе SymADE&SOP так понравился... ты просто не писал никогда сложных программ, не участвовал в сложных проектах.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.