РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
731 of 815 menu

Оператор const_cast

Оператор const_cast используется для снятия или добавления квалификатора const (а также volatile) у указателя или ссылки. В качестве параметра оператор принимает выражение, у которого нужно изменить константность. Это единственное преобразование из четырех явных приведений C++, которое способно убрать константность.

Снимать константность следует только в том случае, если объект изначально не был объявлен как const. Изменение по-настоящему константного объекта через const_cast приводит к неопределенному поведению.

Синтаксис

const_cast<type>(expression)

Пример

Давайте снимем константность с указателя и изменим значение объекта, который изначально не был константным:

#include <iostream> using namespace std; int main() { int a = 1; const int* p = &a; int* q = const_cast<int*>(p); *q = 2; cout << a << endl; return 0; }

Результат выполнения кода:

2

Пример

Давайте снимем константность со ссылки и изменим значение через эту ссылку:

#include <iostream> using namespace std; int main() { int a = 1; const int& ref = a; int& r = const_cast<int&>(ref); r = 2; cout << a << endl; return 0; }

Результат выполнения кода:

2

Пример

Давайте добавим константность указателю с помощью const_cast:

#include <iostream> using namespace std; int main() { int a = 1; int* p = &a; const int* q = const_cast<const int*>(p); cout << *q << endl; return 0; }

Результат выполнения кода:

1

Смотрите также

  • оператор static_cast,
    который выполняет приведение на этапе компиляции
  • оператор dynamic_cast,
    который выполняет безопасное приведение полиморфных типов
  • оператор reinterpret_cast,
    который переинтерпретирует биты объекта
  • оператор c-cast,
    который выполняет приведение в стиле языка C
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить