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

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

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

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

20.05.2014, 22:55. Просмотров 389. Ответов 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??? одного не достаточно? ведь свойства те же
C++ Есть ли в данном массиве элемент, равный заданному числу? Если есть, то вывести номер одного из них.
Зачем вообще нужно слово NULL если можно просто написать 0? C++
Зачем нужны обычные массивы, если есть динамические? C++
Определить, есть ли в заданном предложении цифры. И если есть, найти их сумму C++
C++ Обработка символьных данных. Yes, если есть символ в строке и NO если его нет
C++ Узнать, есть ли среди элементов массива элементы с нечетными номерами, которые кратны 17, и если есть, посчитать их сумму
Есть ли смысл помечать функции как inline, если их прототип уже есть в .h файле? C++
Зачем учить язык в консоли, если пришло время окон? C++
Если в массиве есть хоть 1 отрицательное число, то программа должна печатать max, а если нет - то 0 C++
C++ Зачем учить указатели, если можно использовать вектор?
C++ Зачем нужен iterator, если можно обойтись без него?

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

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

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