Форум программистов, компьютерный форум CyberForum.ru

Зачем reinterpret_cast<>(), если есть static_cast<>() ? - C++

Восстановить пароль Регистрация
 
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
20.05.2014, 22:55     Зачем reinterpret_cast<>(), если есть static_cast<>() ? #1
эти операторы были добавлены в С++ лишь для наглядности по сравнению с C-style casting?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2014, 22:55     Зачем reinterpret_cast<>(), если есть static_cast<>() ?
Посмотрите здесь:

C++ зачем нужен тип private если есть protected??? одного не достаточно? ведь свойства те же
Зачем вообще нужно слово NULL если можно просто написать 0? C++
Зачем нужны обычные массивы, если есть динамические? C++
Определить, есть ли в заданном предложении цифры. И если есть, найти их сумму C++
C++ Обработка символьных данных. Yes, если есть символ в строке и NO если его нет
Есть ли смысл помечать функции как inline, если их прототип уже есть в .h файле? C++
Зачем учить язык в консоли, если пришло время окон? C++
C++ Зачем учить указатели, если можно использовать вектор?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Убежденный
Системный программист
 Аватар для Убежденный
14175 / 6190 / 982
Регистрация: 02.05.2013
Сообщений: 10,298
Завершенные тесты: 1
20.05.2014, 23:23     Зачем reinterpret_cast<>(), если есть static_cast<>() ? #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Приведения в C++ работают по более строгим правилам, чем приведения в стиле С.
Например, в C я легко могу привести указатель к какому-нибудь char-у или наоборот, и
компилятор даже не пикнет. Со static_cast такой номер не пройдет, и даже
reinterpret_cast не позволит это сделать, если размер output-типа слишком мал.

В общем, приведения в C++ можно рассматривать, как более тонкий и безопасный
инструмент для работы с типами:

static_cast - для приведений совместимых типов, например "unsigned char" в "int".
dynamic_cast - для динамического определения типа в полиморфных классах.
const_cast - аккуратное снятие признака константности (именно признака, а не
самой константности).
reinterpret_cast - обработка специальных случаев типа привести <void *> к <size_t>.
C-style - последняя мера, когда ничего уже не помогает.
Yandex
Объявления
20.05.2014, 23:23     Зачем reinterpret_cast<>(), если есть static_cast<>() ?
Ответ Создать тему
Опции темы

Текущее время: 06:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru