Программирование на языке C++ - 114 урок. Константность

9 подписчиков

12+
12+

3 просмотра

16 дней назад

ПожаловатьсяНарушение авторских прав

9 подписчиков

12+
12+

3 просмотра

16 дней назад

ПожаловатьсяНарушение авторских прав
12+
12+

3 просмотра

16 дней назад

Ссылка на плейлист со всеми уроками "Программирование на языке C++" - https://www.youtube.com/watch?v=YaCB_OPWlNs&list=PLoWGNURguz9Ua9CRhJ7y8wphdx4jqZv4u ________________ Автор: Александр Смаль, Михаил Кринкин Лицензия: https://creativecommons.org/licenses/by-sa/4.0/ Источник: https://stepik.org/course/7/ ____________ Задание для закрепления: Очень внимательные слушатели могли заметить, что на предыдущем слайде я допустил ошибку. Если Вы не заметили, но считаете, что хорошо знаете C++, то не читайте дальше, а попробуйте сначала найти её и объяснить, почему это ошибка. Ошибка заключается следующем присваивании: int const ** p1 = &p; В этой строчке я ожидаю, что значение типа int** (адрес переменной p) приведётся к значению типа int const**. Если Вы попробуете скомпилировать этот код, то увидите, что он приводит к ошибке компиляции. Почему? Потому, что стандарт запрещает такие преобразования. Говоря точнее, стандартом разрешены (неявные) преобразования от T* к T const*, но не T** к T const**. Почему бы не разрешить такие преобразования? Оказывается, что, если бы такие преобразования были разрешены, то можно было бы изменить константные данные. Другими словами, система константности C++ была бы некорректна — она позволяла бы изменять неизменяемые данные. Вопрос: как с помощью преобразования вида T** к T const** можно было бы изменить константные данные (если бы C++ позволял такие преобразования)?

Название:

Программирование на языке C++ - 114 урок. Константность

Категория:

Разное