abbra: (Default)
abbra ([personal profile] abbra) wrote2012-07-11 12:33 pm

Клеймо на всю жизнь

Не хотите больше быть программистом? Оставьте свой след в истории:
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)

[identity profile] arkanoid.livejournal.com 2012-07-11 11:15 am (UTC)(link)
В данном случае я просто получил еще одно подтверждение того, что наука умеет много гитик, а сходство плюсцов с plain C в большинстве случаев не более, чем опасная кажимость.

[identity profile] youngracoon.livejournal.com 2012-07-11 03:54 pm (UTC)(link)
Так если бы он знал, что ошибается. Ошибиться может каждый. Хотя (не будучи гуру в C/C++) могу допустить, что это что-то вопиющее...

[identity profile] luarvique.livejournal.com 2012-07-12 12:10 am (UTC)(link)
Саш, народ массово не знает что после "new" следует "delete" делать, а ты про реализацию классов... Только расстреливать через "-Dnew=abort -Ddelete=nafig", да...

ресайклинг из гуд

[identity profile] silpol.livejournal.com 2012-07-23 06:42 pm (UTC)(link)
главное раздобыть списки выпускников и опубликовать как кандидатов на "страшне перо не в гусака" ;)

[identity profile] just-regged.livejournal.com 2012-08-18 08:31 am (UTC)(link)
Это где так происходит, простите?

Вообще, забыть сделать delete[] - это как-то более привычно.

А вообще, boost::smart_ptr спасает :)

не будучи гуру в C/C++ ...

[identity profile] silpol.livejournal.com 2012-07-23 06:40 pm (UTC)(link)
... главное запомнить что это два разных языка, с разными целями создания и архитектурой, поэтому набирая в команду человека, у которого в CV написано C/C++ через слэш, нужно быть крайне осторожным и щупать его на предмет понимания что это _дваразныхязыка_ которые нечистоплотные HR и хэдхантеры лепят в один кусок. Другими словами, C/C++ в CV - это такой сигнал-к-атаке-три-зеленых-свистка.