Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
В чем сакральная мудрость не const параметра std::getline()?
|
|||
|---|---|---|---|
|
#18+
Новичку, которым я являюсь, кажется, что первый параметр следовало бы сделать const. Почему нет? Из-за этого я не могу объявить const передаваемый в использующий getline метод поток. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2018, 18:59 |
|
||
|
В чем сакральная мудрость не const параметра std::getline()?
|
|||
|---|---|---|---|
|
#18+
Может я чего не понимаю, но как параметр input может быть const ? Мы же из него данные читаем и прочитанное после себя удаляем (как минимум позиция в потоке меняется). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2018, 19:31 |
|
||
|
В чем сакральная мудрость не const параметра std::getline()?
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, А, я думал что конст запрещает только явные изменения, типа stream.position = 1. Так он запрещает и "самоизменение" потока от вызова скажем stream.read()? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2018, 19:38 |
|
||
|
В чем сакральная мудрость не const параметра std::getline()?
|
|||
|---|---|---|---|
|
#18+
AFAIK Не знаток C const НИЧЕГО НЕ ЗАПРЕЩАЕТ Он говорит, что данный объект (экземпляр объекта) в данной функции НЕ МЕНЯЕТСЯ Объект input меняется, т.е. он не константа, а обычная переменная ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2018, 19:41 |
|
||
|
В чем сакральная мудрость не const параметра std::getline()?
|
|||
|---|---|---|---|
|
#18+
ВикипедияКонстанта — некоторая величина, не изменяющая своё значение в рамках рассматриваемого процесса. ВикипедияПеременная (программирование) — поименованная, либо адресуемая иным способом область памяти, адрес которой можно использовать для осуществления доступа к данным и изменять значение в ходе выполнения программы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2018, 19:43 |
|
||
|
В чем сакральная мудрость не const параметра std::getline()?
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, в функцию передается ссылка, то есть адрес. этот адрес не меняется. что я упускаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2018, 19:57 |
|
||
|
В чем сакральная мудрость не const параметра std::getline()?
|
|||
|---|---|---|---|
|
#18+
Gobzo KoblerLeonid Kudryavtsev, в функцию передается ссылка, то есть адрес. этот адрес не меняется. что я упускаю? Вы были бы правы, если бы в ф-цию передавался указатель. Указатель == объект "адрес" Ссылка == просто передача объекта by reference. А объект меняется IMHO & AFAIK p.s. повторюсь, не специалист по C / C++. Точные отсылки к specification это к другим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2018, 20:07 |
|
||
|
В чем сакральная мудрость не const параметра std::getline()?
|
|||
|---|---|---|---|
|
#18+
Есть разница между const char * х и char * const х а вообще const - зло, совсем идеологически с С несовместимое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2018, 20:47 |
|
||
|
В чем сакральная мудрость не const параметра std::getline()?
|
|||
|---|---|---|---|
|
#18+
Siemarglа вообще const - зло, совсем идеологически с С несовместимоеconst - чистый прагматизм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2018, 20:54 |
|
||
|
В чем сакральная мудрость не const параметра std::getline()?
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevМожет я чего не понимаю, но как параметр input может быть const ? Мы же из него данные читаем и прочитанное после себя удаляем (как минимум позиция в потоке меняется).Не так! По идеологии Си, отсутствие const подразумевает, что функция может менять содержимое буфера, адрес которого задан указателем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2018, 23:27 |
|
||
|
В чем сакральная мудрость не const параметра std::getline()?
|
|||
|---|---|---|---|
|
#18+
SiemarglЕсть разница между const char * х и char * const х а вообще const - зло, совсем идеологически с С несовместимоеКонечно! В первом случае это запрещенный к изменению (с точки зрения компилятора) указатель на буфер, а во втором - изменяемый указатель на буфер с запрещенным к изменению содержимым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2018, 23:31 |
|
||
|
В чем сакральная мудрость не const параметра std::getline()?
|
|||
|---|---|---|---|
|
#18+
rdb_dev, Ну это типа защита от логических ошибок? То есть если при создании метода подразумевается, что параметр в нем менять нельзя, объявляешь его конст и компилятор ругнется если кто-то об этом забудет? Почему тогда зло? В жабе это очень рекомендованный подход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2018, 23:40 |
|
||
|
В чем сакральная мудрость не const параметра std::getline()?
|
|||
|---|---|---|---|
|
#18+
Gobzo KoblerНу это типа защита от логических ошибок? Не только. Ещё и оптимизатор может использовать это указание как хинт и избегать создания временных переменных. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 00:08 |
|
||
|
В чем сакральная мудрость не const параметра std::getline()?
|
|||
|---|---|---|---|
|
#18+
Gobzo KoblerПочему тогда зло?потому что Siemargl у нас экстремист)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 00:32 |
|
||
|
В чем сакральная мудрость не const параметра std::getline()?
|
|||
|---|---|---|---|
|
#18+
egorych, так все-таки насчет getline() хотелось бы понять. если внутри она читает из переданного потока, почему этот параметр не может быть константой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 01:18 |
|
||
|
В чем сакральная мудрость не const параметра std::getline()?
|
|||
|---|---|---|---|
|
#18+
Gobzo Koblerпочему этот параметр не может быть константой?ну, как минимум, ему внутри зовётся setstate, а это, подозреваю, несовместимо с const я const использую везде, где нужно, из соображений оптимизации и дополнительного исключения ошибок если при компиляции возникают ошибки, связанные с const, для меня это хороший повод пересмотреть логику ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 05:24 |
|
||
|
В чем сакральная мудрость не const параметра std::getline()?
|
|||
|---|---|---|---|
|
#18+
Gobzo Kobleregorych, так все-таки насчет getline() хотелось бы понять. если внутри она читает из переданного потока, почему этот параметр не может быть константой? Потому что поток, из которого ты читаешь, меняется при чтении. Функции, которыми ты внутри std::getline читаешь из потока, не CONST, и если бы первый параметр (ссылка на поток) был бы CONST, эти функции чтения из потока нельзя было бы вызвать, т.е. нельзя было бы читать. Чтение из потока и запись в поток изменяют этот поток, поэтому эти функции не являются const. авторИз-за этого я не могу объявить const передаваемый в использующий getline метод поток. Если ты хочешь объявить CONST поток, из которого ты читаешь, то ты хочешь чего-то очень странного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 12:03 |
|
||
|
В чем сакральная мудрость не const параметра std::getline()?
|
|||
|---|---|---|---|
|
#18+
rdb_devSiemarglЕсть разница между const char * х и char * const х а вообще const - зло, совсем идеологически с С несовместимоеКонечно! В первом случае это запрещенный к изменению (с точки зрения компилятора) указатель на буфер, а во втором - изменяемый указатель на буфер с запрещенным к изменению содержимым. отличная иллюстрация непонимания конст. просто наоборот. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. заодно наверное и ответ ТСу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2018, 14:31 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39622890&tid=2017904]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
58ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 161ms |

| 0 / 0 |
