2 / 2 / 0
Регистрация: 24.11.2016
Сообщений: 77
1

Неконстантный указатель на константный объект

23.02.2017, 02:01. Показов 969. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, объясните пожалуйста, вот это:
C++
1
2
const int ival = 1024;
int *const &piref = &ival;
Типа мы создали дополнительное имя для адреса переменной ival? Зачем тут ссылка на адрес?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.02.2017, 02:01
Ответы с готовыми решениями:

Что значит константный указатель на объект, указатель на константный объект, и как это можно использовать?
Подскажите, что значит константный указатель на объект, указатель на константный объект, и как это...

Константный указатель или указатель на константу?
Привет всем.Уважаемые программисты пожалуйста скажите чем отличать когда написано например int...

Константный указатель
Здравствуйте! Имею класс - MyClass. Константный указатель на него: const MyClass *pMyClass; ...

Константный указатель
Для записи через * T * const name; Для записи через ???

4
Велосипедист...
353 / 220 / 73
Регистрация: 15.12.2015
Сообщений: 785
23.02.2017, 02:51 2
Цитата Сообщение от FishZone Посмотреть сообщение
int *const &piref = &ival;
Мне кажется, или оно даже не скомпилится?
0
Вездепух
Эксперт CЭксперт С++
11688 / 6367 / 1723
Регистрация: 18.10.2014
Сообщений: 16,050
23.02.2017, 07:10 3
&ival имеет тип const int *. Значение типа const int * не может использоваться для инициализации ссылки типа int *const &. Код не скомпилируется.

Для инициализации такой ссылки нужно создать константный временный объект типа int *. А у нас инициализатор имеет тип const int *. Из const int * получить int * не получится - это очевидное нарушение правил константной корректности.

Вот если бы было написано

C++
1
2
const int ival = 1024;
const int *const &piref = &ival;
то было бы все правильно. Разве что только было бы не ясно, зачем тут использована ссылка. С точки зрения дальнейшего поведения piref можно было бы убрать "ссылочность" типа piref и поведение бы не изменилось (разве что только dectype(piref) смог бы заметить, что что-то поменялось).
0
132 / 158 / 87
Регистрация: 06.04.2016
Сообщений: 992
23.02.2017, 07:15 4
TheCalligrapher, так не компилируется же:
C++
1
int *const &piref = &ival;
Только так:
C++
1
int const *piref = &ival;
0
Вездепух
Эксперт CЭксперт С++
11688 / 6367 / 1723
Регистрация: 18.10.2014
Сообщений: 16,050
23.02.2017, 07:45 5
Цитата Сообщение от DemolitionMan Посмотреть сообщение
так не компилируется же
Я сначала неправильно описал ситуацию. Потом исправил.
0
23.02.2017, 07:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.02.2017, 07:45
Помогаю со студенческими работами здесь

Константный указатель
Почему в данном примере константный указатель может быть использован для вывода элементов вектора?...

Константный метод и указатель this
class CBox { double Length; double Height; double Width; public: CBox(double a,...

Константный указатель на целое
Начал осваивать С++ по книжке Страуструпа, одно из первых заданий: напишите описание константного...

Константная переменная и константный указатель
В чем разница : int const а; const int a; С указателями такое видел, с переменными нет.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru