|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|||
Указатель this, теория23.03.2017, 12:53. Показов 6655. Ответов 80
Метки нет (Все метки)
И все говорят о его константности...
2
|
|||
| 23.03.2017, 12:53 | |
|
Ответы с готовыми решениями:
80
Как получить ссылку на указатель или указатель на указатель в массиве?
|
| 23.03.2017, 16:50 | |
|
0
|
|
|
Вездепух
13235 / 6867 / 1827
Регистрация: 18.10.2014
Сообщений: 17,407
|
||
| 23.03.2017, 18:21 | ||
2 + 3 дает prvalue типа int. Не const int, а именно int. Выражение 3.14 имеет тип double. Не const double, а именно double.То же самое относится и к указателю this. Так как указатель this имеет скалярный тип и, как уже было сказано, является prvalue, он в принципе не может быть const.Поэтому утверждения типа "указатель this всегда является указателем const и не может быть переназначен" являются терминологически некорректными. Понятно, что хотел сказать автор, но выразился он неправильно. Указатель this не может быть переназначен именно потому, что он является prvalue, а не потому, что он якобы является const.
0
|
||
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|
| 23.03.2017, 18:22 [ТС] | |
|
Да может this согласно стандарту быть const! Просто он не всегда const. Общее заблуждение, что он именно всегда const, в студии, например, вопреки общему стандарту, он действительно всегда const.
Хватит всех путать.
0
|
|
|
Вездепух
13235 / 6867 / 1827
Регистрация: 18.10.2014
Сообщений: 17,407
|
|||
| 23.03.2017, 18:23 | |||
const.Формулировка этого правила менялась с ходом времени, но общая идея остается неизменной
0
|
|||
| 23.03.2017, 18:26 | |
|
0
|
|
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|||
| 23.03.2017, 18:30 [ТС] | |||
0
|
|||
|
Форумчанин
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 23.03.2017, 18:33 | |
|
daslex, как бы есть разница между
const X* и X* const Добавлено через 1 минуту Ну хоть в чём то я был прав - вы и вправду путаете константный указатель и указатель на константу.
2
|
|
|
Вездепух
13235 / 6867 / 1827
Регистрация: 18.10.2014
Сообщений: 17,407
|
||
| 23.03.2017, 18:36 | ||
this тип X *const или просто X *. Ваше const X * - это совершенно другая опера к теме обсуждения никакого отношения не имеющая. Вам надо подучить разницу между const X * и X *const. Вы похоже не понимаете разницы между константностью самого указателя и константностью указуемого объекта.
1
|
||
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|
| 23.03.2017, 18:37 [ТС] | |
|
Уловил.
0
|
|
|
Форумчанин
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 23.03.2017, 18:46 | |
|
Тема всё равно годная, ни в какое сравнение с кучей глупых вопросов в разделе.
3
|
|
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
||
| 23.03.2017, 18:53 [ТС] | ||
|
Не по теме: Я понял с указателями. Невнимательность, чтоб её.
0
|
||
| 23.03.2017, 19:01 | ||
|
Не по теме:
А тема, действительно, интересная получилась.
0
|
||
| 23.03.2017, 20:51 | |
|
0
|
|
|
Вездепух
13235 / 6867 / 1827
Регистрация: 18.10.2014
Сообщений: 17,407
|
||
| 23.03.2017, 21:27 | ||
Сообщение было отмечено MrGluck как решение
РешениеВ С++ есть два совершенно разных понятия: константность выражения и cv-квалификация (const-volatile квалификация) типа выражения. * Под константностью значения выражения в С++ понимается известность его значения на стадии компиляции. (Это концептуальная известность. Значения адресных констант могут быть не известны на стадии компиляции, но тем не менее язык считает их константами.) * Под cv-квалификацией значения выражения подразумевается наличие в типе результата выражения квалификаторов const или volatile верхнего уровня.Это сильно разные вещи. * Например, если мы объявили const int i = rand();, то выражение i является lvalue, имеет тип const int, то есть у него есть cv-квалификация. Однако константой (константным выражением) выражение i не является.* В то же время если мы объявим const int i = 5;, то выражение i + 1 не является lvalue, имеет тип int (то не является cv-квалифицированным), но при этом оно является константой (константным выражением).К сожалению, в неформальном или полуформальном контексте эти понятия часто перепутываются. Подразумевается, что из контекста должно быть понятно, о чем именно идет речь. В данном случае дискуссия неформально шла о "константности" указателя this. Это, конечно же, неправильно. На самом деле мы говорили о const-квалифицированности значения this. Оно не является const-квалифицированным, т.к. является prvalue скалярного типа.А вот является ли this константой (константным выражением) - это отдельная тема. Если я ничего не упускаю, в constexpr членах статических объектов this является адресным константным выражением. В остальных случаях - не является.Процитированный вами текст тоже ведет речь именно о константных выражениях языка. Никакого заблуждения в процитированном тексте нет. Надо просто помнить, что к квалификатору const процитированный текст отношения не имеет. Под константностью выражения 3+4 понимается именно его константность, т.е. известность его значения не стадии компиляции. Но авторы не пытаются утверждать, что тип выражения 3+4 содержит квалификатор const.
9
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||||||
| 23.03.2017, 21:33 | ||||||||||||
|
здесь имеются ввиду константы времени компиляции. результат 3+4 есть - временный объект, который 7. но при этом само выражение - является константой времени компиляции. и компилятор может тупо подставить 7 там, где это выражение использовалось. а сам результат таких вычислений можно использовать везде, где требуются константы времени компиляции:
например:
0
|
||||||||||||
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|
| 23.03.2017, 21:34 [ТС] | |
|
Не по теме: Ненавижу контекст, он всё затрудняет. Объяснение хорошее.
0
|
|
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
||||||
| 23.03.2017, 22:02 [ТС] | ||||||
|
А вот объяснение Хогги меня корёжит (в переносном смысле).
3+4 - временный объект, он не prvalue? Это адресный вопрос, только к Хогги. Добавлено через 19 минут На самом деле жаль, конечно, что разного вида константность смешали в одну кашу. Можно ведь приставками или префиксами было обозначать какие-нибудь:
0
|
||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 23.03.2017, 22:11 | |||
|
если значение может быть вычисленно только времени выполнения, значит уже не константа времени компиляции.
0
|
|||
| 23.03.2017, 22:11 | |
|
Как правильно удалять выделенную память под указатель на указатель? Зачем нужен указатель на указатель при работе с однонаправленным списком? Реализация двоичных деревьев поиска: Зачем в параметрах функции используется указатель на указатель Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Задача:
Программно добавить префикс в нумерацию документов в самописной конфигурации на БСП (помощь начинающему коллеге).
Решение:
В модуле объекта документа размещен следующий код:
Процедура. . .
|
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
|
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него.
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952
Инструкция внутри.
https:/ / youtu. be/ VpfFZSUDGnQ. . .
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|