Клеймо на всю жизнь
Jul. 11th, 2012 12:33 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Не хотите больше быть программистом? Оставьте свой след в истории:
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
Date: 2012-07-11 09:53 am (UTC)no subject
Date: 2012-07-11 09:54 am (UTC)no subject
Date: 2012-07-11 10:00 am (UTC)no subject
Date: 2012-07-11 10:16 am (UTC)http://beldmit.livejournal.com/51712.html?nc=6#comments
Оптимизация - страшная вещь.
no subject
Date: 2012-07-11 10:25 am (UTC)no subject
Date: 2012-07-11 10:33 am (UTC)no subject
Date: 2012-07-11 10:37 am (UTC)no subject
Date: 2012-07-11 12:12 pm (UTC)no subject
Date: 2012-07-11 12:13 pm (UTC)no subject
Date: 2012-07-11 12:20 pm (UTC)no subject
Date: 2012-07-11 12:22 pm (UTC)no subject
Date: 2012-10-17 08:42 am (UTC)Указатель на метод не является частью реализации объекта(структуры) класса.
Только если этот метод виртуальный и\или в нем была бы попытка обращения по this, были бы проблемы.
А так, такому удивлятся может только человек ни разу не видевший свой код в ассемблере\дебагере. :))
no subject
Date: 2012-07-11 10:19 am (UTC)no subject
Date: 2012-07-11 10:21 am (UTC)no subject
Date: 2012-07-11 11:35 am (UTC)Мой вопрос был про то, что operator->() должон бы возвращать T* в общем случае, в результате чего выполнялось бы выражение из первого абзаца. А две стрелочки - почти рекурсия.
Впрочем, если возвращается указатель, то -> сводится к простому типу и произойдет то самое разыменовывыние (*X).m.
no subject
Date: 2012-07-11 10:21 am (UTC)no subject
Date: 2012-07-11 10:22 am (UTC)no subject
Date: 2012-07-11 10:20 am (UTC)no subject
Date: 2012-07-11 10:23 am (UTC)no subject
Date: 2012-07-11 10:35 am (UTC)no subject
Date: 2012-07-11 11:06 am (UTC)хотя на текметриксе до мастера в свое время как-то дотянул, но это говорит больше про текметрикс, чем про меня.
no subject
Date: 2012-07-11 11:12 am (UTC)no subject
Date: 2012-07-11 11:15 am (UTC)no subject
Date: 2012-07-11 11:22 am (UTC)no subject
Date: 2012-07-11 03:54 pm (UTC)no subject
Date: 2012-07-11 04:19 pm (UTC)no subject
Date: 2012-07-12 12:10 am (UTC)no subject
Date: 2012-07-12 05:52 am (UTC)ресайклинг из гуд
Date: 2012-07-23 06:42 pm (UTC)no subject
Date: 2012-08-18 08:31 am (UTC)Вообще, забыть сделать delete[] - это как-то более привычно.
А вообще, boost::smart_ptr спасает :)
не будучи гуру в C/C++ ...
Date: 2012-07-23 06:40 pm (UTC)no subject
Date: 2012-07-11 10:22 am (UTC)no subject
Date: 2012-07-12 12:08 am (UTC)no subject
Date: 2012-07-11 07:55 pm (UTC)no subject
Date: 2012-07-11 08:00 pm (UTC)no subject
Date: 2012-07-12 12:45 am (UTC)no subject
Date: 2012-07-12 05:45 am (UTC)no subject
Date: 2012-08-18 08:32 am (UTC)no subject
Date: 2012-08-18 09:59 am (UTC)no subject
Date: 2012-08-18 04:17 pm (UTC)Мы тут пытались как-то рубиста нанять себе, редмайн под наши нужды допиливать. Поскольку опыта собеседований именно по руби у нас мало, ну, мы им попробовали давать всякие задачки из обычных собеседований: на манипулирование структурами данных, на оценку сложности задач ну и т.п. В целом, у нас очень простые задачки. Результат в целом оказался восхитительным в своей мерзости. Особо талантливых мой товарищ-начальник R&D срубал вопросом "сколько будет 2^8", но это, конечно, он со зла.
А ведь люди вполне себе работают, сайты строчат, деньги за них получают. Им просто не нужны все эти "тонкости". И не одним им, кстати. У нас и C++-программисты (ну, ладно, C++-билдер-программисты) на собеседования приходили, не умея обход дерева организовать. И ничего, трудятся.
no subject
Date: 2012-08-18 04:31 pm (UTC)no subject
Date: 2012-08-28 06:55 am (UTC)no subject
Date: 2012-07-12 12:07 am (UTC)Ему бы за студентами ошибки в большом проекте поискать - так он бы там и не такое нашел. Правда написать об этом 5 страниц без единого матерного слова не смог бы.
к студентам не пущать
Date: 2012-07-23 06:36 pm (UTC)no subject
Date: 2012-08-18 07:08 pm (UTC)no subject
Date: 2012-08-18 07:35 pm (UTC)