Клеймо на всю жизнь
Не хотите больше быть программистом? Оставьте свой след в истории:
http://blog.8thlight.com/dariusz-pasciak/2012/07/03/dereferencing-null-pointer-without-a-seg-fault.html
После того, как прочитали, заходите под кат и ответьте на вопрос: Скажите, а вас учили, что оператор -> над классами в C++ эквивалентен разыменованию указателя в C?
Что интересно, в стандарте С++ в 5.2.5 (Class member access) в третьем абзаце написано:
Правда, 13.5.6 (Class member access) говорит уже более аккуратно об этом:
http://blog.8thlight.com/dariusz-pasciak/2012/07/03/dereferencing-null-pointer-without-a-seg-fault.html
После того, как прочитали, заходите под кат и ответьте на вопрос: Скажите, а вас учили, что оператор -> над классами в C++ эквивалентен разыменованию указателя в C?
Что интересно, в стандарте С++ в 5.2.5 (Class member access) в третьем абзаце написано:
If E1 has the type “pointer to class X,” then the expression E1->E2 is converted to the equivalent form (*(E1)).E2; the remainder of 5.2.5 will address only the first option (dot).
Правда, 13.5.6 (Class member access) говорит уже более аккуратно об этом:
An expression x->m is interpreted as (x.operator->())->m for a class object x of type T if T::operator->() exists and if the operator is selected as the best match function by the overload resolution mechanism (13.3)
no subject
no subject
no subject
no subject
http://beldmit.livejournal.com/51712.html?nc=6#comments
Оптимизация - страшная вещь.
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
хотя на текметриксе до мастера в свое время как-то дотянул, но это говорит больше про текметрикс, чем про меня.
no subject
no subject
no subject
no subject
Мой вопрос был про то, что operator->() должон бы возвращать T* в общем случае, в результате чего выполнялось бы выражение из первого абзаца. А две стрелочки - почти рекурсия.
Впрочем, если возвращается указатель, то -> сводится к простому типу и произойдет то самое разыменовывыние (*X).m.
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
Ему бы за студентами ошибки в большом проекте поискать - так он бы там и не такое нашел. Правда написать об этом 5 страниц без единого матерного слова не смог бы.
no subject
no subject
no subject
no subject
no subject
к студентам не пущать
не будучи гуру в C/C++ ...
ресайклинг из гуд
no subject
Вообще, забыть сделать delete[] - это как-то более привычно.
А вообще, boost::smart_ptr спасает :)
no subject
no subject
no subject
Мы тут пытались как-то рубиста нанять себе, редмайн под наши нужды допиливать. Поскольку опыта собеседований именно по руби у нас мало, ну, мы им попробовали давать всякие задачки из обычных собеседований: на манипулирование структурами данных, на оценку сложности задач ну и т.п. В целом, у нас очень простые задачки. Результат в целом оказался восхитительным в своей мерзости. Особо талантливых мой товарищ-начальник R&D срубал вопросом "сколько будет 2^8", но это, конечно, он со зла.
А ведь люди вполне себе работают, сайты строчат, деньги за них получают. Им просто не нужны все эти "тонкости". И не одним им, кстати. У нас и C++-программисты (ну, ладно, C++-билдер-программисты) на собеседования приходили, не умея обход дерева организовать. И ничего, трудятся.
no subject
no subject
no subject
no subject
no subject
Указатель на метод не является частью реализации объекта(структуры) класса.
Только если этот метод виртуальный и\или в нем была бы попытка обращения по this, были бы проблемы.
А так, такому удивлятся может только человек ни разу не видевший свой код в ассемблере\дебагере. :))