Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2011, 16:53   #1
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
Вопрос static_cast или reinterpret_cast

Вот есть такая ситуация:
Код:
int* p = malloc(sizeof(int));
Разумеется, в С++ компиле нужно привести типы.
Что лучше использовать для такого приведения? static_cast или reinterpret_cast? Да, знаю, работают они оба, но всё-таки..Что безопасней(вроде бы static_cast), лучше?
_-Re@l-_ вне форума Ответить с цитированием
Старый 10.12.2011, 17:03   #2
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

В данном случаи не важно.
В общем случаи - static_cast работает только в пределах иерархии классов, т.е. когда один из классов является наследником другого, а так же с базовыми типами, является безопасным
reinterpret_cast - работает с любыми типами, не делает никаких проверок, не является безопасным. Аналогичен приведению в стиле Си
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 10.12.2011, 19:11   #3
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от Blade Посмотреть сообщение
reinterpret_cast - работает с любыми типами, не делает никаких проверок, не является безопасным. Аналогичен приведению в стиле Си
reinterpet_cast не может изменять константность, также как и приводить что-либо, кроме указателей.
netrino вне форума Ответить с цитированием
Старый 10.12.2011, 19:31   #4
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

а зачем маллок в цпп?
onewho вне форума Ответить с цитированием
Старый 10.12.2011, 20:42   #5
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
а зачем маллок в цпп?
Так хочу.
Цитата:
reinterpet_cast не может изменять константность, также как и приводить что-либо, кроме указателей.
Так на константность вапше влияет только const_cast. И на volatile тоже только он.
_-Re@l-_ вне форума Ответить с цитированием
Старый 10.12.2011, 20:58   #6
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от _-Re@l-_ Посмотреть сообщение
Так на константность вапше влияет только const_cast. И на volatile тоже только он.
И сишное приведение. Это ответ фразе "Аналогичен приведению в стиле C"
netrino вне форума Ответить с цитированием
Старый 10.12.2011, 23:39   #7
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

netrino, точно.
Я почему-то думал, что reinterpet_cast с константами и базовыми типами тоже работает

А вообще, ТС, юзай new, и никаких кастов не нужно будет
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 11.12.2011, 08:44   #8
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
Я почему-то думал, что reinterpet_cast с константами и базовыми типами тоже работает
Аналогично Да, теперь всё ясно. Всем спасибо.
_-Re@l-_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен скрипт для Photoshop или Lightroom, ну или отдельную программу. Михаил Понедельник Фриланс 2 09.11.2011 21:37
Тестирующая программа (на PHP или JavaScript или Delphi или Visual Basic) @@@Сергей@@@ Фриланс 2 05.05.2011 17:48
Ошибка в temp... виноваты динамичсекие массивы или тип не тот или.. Shabalinuk C++ Builder 5 12.11.2010 12:38
Static_cast Lotles Общие вопросы C/C++ 1 24.10.2010 16:05