- 1
*new
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−40
*new
Самая соль.
HaskellGovno 20.06.2012 13:04 # +1
bormand 20.06.2012 13:15 # +4
Steve_Brown 20.06.2012 14:32 # 0
CFoo *pFoo = &*new CFoo; // заведомо бессмысленно
Ну, можно, конечно, ссылку инициализировать, типа
bormand 20.06.2012 15:05 # +5
UPD: Естественно, смысла в этом нет :)
HaskellGovno 20.06.2012 15:07 # +6
TarasB 20.06.2012 14:20 # +5
Xom94ok 20.06.2012 19:34 # +8
HaskellGovno 20.06.2012 20:52 # +1
Xom94ok 20.06.2012 21:36 # 0
Я всего лишь пытаюсь с оптимизмом посмотреть на этот код :-) TarasB прав, нужно смотреть контекст.
Steve_Brown 21.06.2012 10:43 # +1
:)
guest 21.06.2012 23:36 # −6
guest 22.06.2012 18:16 # +6
Kirinyale 25.06.2012 12:33 # 0
Мы так регулярно ссылки возвращаем из методов с самодокументирующим (по кодстайлу) названием типа create. RAII, подсчёта ссылок и прочих необходимых по контексту прелестей это не отменяет.
Возвращение/передача ссылки вместо указателя, в частности, символизирует невозможность NULL (т.е. отсутствие необходимости его проверять на каждом шагу или думать перед вызовом функции, можно ли ей его передать, если очень хочется).
bormand 25.06.2012 12:38 # +2
Скажем мягче - невозможность при вменяемости программиста. Т.к. нехороший человек может намеренно или случайно сделать return *p, где p == NULL и получится нулевая ссылка.
Kirinyale 25.06.2012 12:43 # 0
В любом случае, баги могут быть (и будут) при любом стиле, но ссылка в интерфейсе метода - отличный способ обойтись без лишних комментариев по поводу NULL.
bormand 25.06.2012 12:48 # 0
defecate-plusplus 25.06.2012 12:59 # 0
return *p - заставит убиться прямо тут (если сигналы не ловить, не рассматриваем)
а вот int & a = a; - как раз невалидная ссылка, которую можно вернуть - получается отложенная пуля в ногу
bormand 25.06.2012 13:02 # +2
http://ideone.com/2mCis
defecate-plusplus 25.06.2012 13:21 # +1
что же, выходит можно возвращать ссылки в виде return *p;
пруф в стандарте, что можно -
HaskellGovno 24.08.2012 21:00 # 0
Тут про incomplete type говорится. Для complete type другое поведение может быть.
defecate-plusplus 24.08.2012 23:10 # +1
пруф тогда привел неверный - торопился, видать, а найти подходящий пункт в пфд найти не удалось
собственно, это, как оказывается, было не так трививально:
http://bit.ly/NPeziu
http://bit.ly/Hi3Okf
3.14159265 07.07.2012 14:09 # +3