![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
![]()
Попалась на глаза, условно такая конструкция:
Код:
Я бы использовал указатель, т.к. для меня ссылка подразумевает явный параметр. Но может кто использует такой стиль? |
![]() |
![]() |
![]() |
#2 | |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
![]()
Да вот я че-то не вижу некорректности в поведении программы.
Это меня и смутило. |
![]() |
![]() |
![]() |
#4 | |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]() Цитата:
Код:
|
|
![]() |
![]() |
![]() |
#5 | |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
![]() Цитата:
Если опционально задан нулевой адрес и этот факт проверяется в функции, то почему работоспособность - случайность? |
|
![]() |
![]() |
![]() |
#6 | ||
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]() Цитата:
Цитата:
То есть нет гарантии, что программа будет работать на других платформах, нет гарантии, что она будет работать при компиляции другим компилятором, нет даже гарантий, что она будет корректно работать при компиляции тем же компилятором с другими опциями или уровнями оптимизации. Последний раз редактировалось netrino; 03.05.2012 в 02:41. |
||
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
![]()
Вот не вижу в упор противоречий со стандартом.
![]() В приведенном отрывке говорится о разыменовывании нулевого указателя. Но ведь в функции этот факт проверяется и не делается попытки присвоения значения в несуществующий объект. PS Или само взятие адреса такой ссылки уже некорректное действие? Последний раз редактировалось EUGY; 03.05.2012 в 02:55. |
![]() |
![]() |
![]() |
#8 | |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]() Цитата:
Код:
Код:
Пример я взял с блога LLVM, там же можно найти серию статей на тему неопределённого поведения в C++ и чем это чревато, рекомендую прочесть. http://blog.llvm.org/2011/05/what-ev...ould-know.html http://blog.llvm.org/2011/05/what-ev...d-know_14.html http://blog.llvm.org/2011/05/what-ev...d-know_21.html |
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
![]()
Да, спасибо.
Интуитивно чувствовал, что плохой стиль. Убедили! PS. ___ Собственно вопрос возник не на пустом месте. Исправляю чужой проект. Подобные нулевые ссылки по умолчанию там раскиданы по многим функциям. Любопытно, как внести минимум поправок. Будет компилироватся на студийном VS2010. Может так: Код:
Последний раз редактировалось EUGY; 03.05.2012 в 04:44. Причина: PS |
![]() |
![]() |
![]() |
#10 | |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
![]() Цитата:
PPS. Нет, торможу, не спасет. Значит все переписывать, и передавать указатель! ![]() |
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Матрица как входящий параметр | inmyacid | Общие вопросы Delphi | 6 | 19.04.2012 15:39 |
Матрица как параметр | miftayka | Visual C++ | 2 | 09.04.2012 20:19 |
Параметр-ссылка со значением по умолчанию | wandererindreams | Общие вопросы C/C++ | 14 | 12.08.2011 13:00 |
как сделать параметр | ГОСЕАН | БД в Delphi | 6 | 20.04.2009 07:24 |
Как передать параметр? | Иллидан | Общие вопросы Delphi | 8 | 12.07.2008 12:57 |