<<
>>

Оператор reinterpret_cast

Оператор reinterpret_east осуществляет низкоуровневую переинтерпретацию битов его операнда.

Оператор reinterpret_cast считается жестко машинно-зависимым. Для безопасного применения оператора reinterpret_cast следует хорошо понимать, как именно реализованы используемые типы, а также то, как компилятор осуществляет приведение.

Обсудим следующий пример приведения: int *ptr_int;

char *ptr_char = reinterpret_cast(ptr_int);

В подобном случае программист должен помнить, что фактическим типом объекта, адрес которого содержит указатель ptr_char, является int, а не символьный тип.

Любая попытка применения указателя там, где необходим обычный символьный указатель, скорее всего, потерпит неудачу именно в период выполнения. Например, его использование для инициализации объекта типа string, как в следующем случае, приведет к весьма необычному поведению во время вычислений. string str(ptr_char);

Использование указателя рtr_char для инициализации объекта типа string — это наглядная демонстрации опасности явных приведений. Проблема заключается в том, что при изменении типа компилятор не формирует никаких предупреждений. При инициализации указателя ptr_char адресом для типа int компилятор не выдаст какого-либо сообщения об ошибке, поскольку задано явное преобразование. Однако любое последующее применение указателя рtr_char подразумевает, что он содержит адрес значения типа char. Компилятор не способен выяснить, что на

Совместимость типов и неявное приведение

311

самом деле указатель хранит адреса целых чисел. Таким образом, инициализация строки Б'Ъг при помощи указателя вполне допустима, но по сути даже преступна. Отследить причину такой проблемы чрезвычайно трудно.

<< | >>

Еще по теме Оператор reinterpret_cast:

  1. ОШИБКА ОПЕРАТОРА
  2. ДЕЯТЕЛЬНОСТЬ ОПЕРАТОРА
  3. ОПЕРАТОР
  4. ОПЕРАТОР: ПРИЕМ ИНФОРМАЦИИ
  5. ОПЕРАТОР: НАДЕЖНОСТЬ
  6. ОПЕРАТОР: ПОМЕХОУСТОЙЧИВОСТЬ
  7. Профессия оператора: между техникой и искусством
  8. МЕСТО РАБОЧЕЕ: ПОЛЕ ИНФОРМАЦИОННОЕ
  9. СИСТЕМА ЭРРАТИЧЕСКАЯ
  10. МОДЕЛЬ ОБРАЗНО-КОНЦЕПТУАЛЬНАЯ
  11. Третий этап
  12. ТРЕНАЖЕР
  13. МОДЕЛЬ ИНФОРМАЦИОННАЯ
  14. Основные типы причин
  15. Первый этап
  16. МОДЕЛЬ КОНЦЕПТУАЛЬНАЯ
  17. Модель SOAR
  18. Главный режиссер на телевидении
  19. Тест 14. "Как вы считаете, почему труп сначала утопили, а потом извлекли из воды и закопали в землю?"