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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
gromo
370 / 269 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
#1

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

20.05.2014, 22:55. Просмотров 413. Ответов 1
Метки нет (Все метки)

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

Зачем нужен тип private, если есть protected? - C++
зачем нужен тип private если есть protected??? одного не достаточно? ведь свойства те же. и даже лучше...

Зачем нужны обычные массивы, если есть динамические? - C++
Всем привет! Вопрос в заголовке. Если динамический массив даёт те же и ещё больше функций и, при том, лучше обращается с памятью, зачем...

Зачем учить указатели, если можно использовать вектор? - C++
Не могу понять, зачем учить указатели если в большинстве случаев для выделения памяти намного легче использовать vector?

Определить, есть ли в заданном предложении цифры. И если есть, найти их сумму - C++
Определить, есть ли в заданном предложении цифры. И если есть, найти их сумму.

Обработка символьных данных. Yes, если есть символ в строке и NO если его нет - C++
Здравствуйте! Помогите решить задачу: Если в данный текст входит любая из букв слова key, напечатать да, если не входит то нет. #include...

Зачем учить язык в консоли, если пришло время окон? - C++
Добрый вечер! Я когда начинал изучать этот язык искал литру и остановился на Р.Лафоре ООП. Ну прочитал мало но понял. Но после этого...

Зачем нужен iterator, если можно обойтись без него? - C++
Почему нужен итератор(iterator) если этот код #include &lt;iostream&gt; #include &lt;vector&gt; #include&lt;iterator&gt; using namespace std; ...

Есть ли смысл помечать функции как inline, если их прототип уже есть в .h файле? - C++
Есть ли смысл помечать функции как inline, если их прототип уже есть в .h файле? Функции в одну строчку, сразу в ретарне вычисляет...

Если в массиве есть хоть 1 отрицательное число, то программа должна печатать max, а если нет - то 0 - C++
Дано массив... если в массиве есть хоть 1 отрицательное число то программа должна печатать max, а если нет то 0; ну я здесь написал кое...

Зачем вообще нужно слово NULL если можно просто написать 0? - C++
Для чего нужны все эти слова как например NULL, EOF? Вместо них можно просто цифры написать.

Есть ли в данном массиве элемент, равный заданному числу? Если есть, то вывести номер одного из них. - C++
Есть ли в данном массиве элемент, равный заданному числу? Если есть, то вывести номер одного из них. Напишите программу пожалуйста,очень...

Узнать, есть ли среди элементов массива элементы с нечетными номерами, которые кратны 17, и если есть, посчитать их сумму - C++
Проблема с заданием. Дан одномерный массив. Узнать, есть ли среди них элементы с нечетными номерами, которые кратны 17, и если есть,...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Убежденный
Системный программист
Эксперт С++
15298 / 6930 / 1096
Регистрация: 02.05.2013
Сообщений: 11,340
Завершенные тесты: 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 - последняя мера, когда ничего уже не помогает.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru