9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
1

*_cast< тип >( выражение )

23.04.2012, 01:24. Показов 912. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В чём отличие static_cast, dynamic_cast, reinterpret_cast, const_cast от преобразования типа в скобках (стиль Си вроде)
C++
1
2
float f = 10.9;
int i = (int)f;
Читал что этот вариант пришёл из Си, а в C++ предусмотрены 4 функции, но в чём отличие-то? Помоему и Си стиль корректно переводит.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.04.2012, 01:24
Ответы с готовыми решениями:

Как сделать *_cast указателя shared_ptr<T>?
Хочу определять тип (например через dynamic_cast) указателя shared_ptr. (криво звучит но по...

Проверка пароля и ошибка "Выражение, имеющее тип void, нельзя преобразовать в другой тип"
В общем есть такая программа которая проверяет пароль Вот код: private: System::Void...

Выражение должно иметь тип класса. Да ну?
перекопал весь форум, ни где не нашел решение моей проблемы. #include &lt;GL/glut.h&gt; #include...

Вычислить выражение, используя тип double
Помогите решить простую задачу, сам только учусь. a^4+b^4–a^4\(6*a^2*b^2)+(4*a*b^3)+b^4+(4*a^3*b)...

4
601 / 569 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
23.04.2012, 01:26 2
Страуструп пишет, что они опасны, и лучше пользоваться приведением типов в стиле Си
но вы описали только первую.
dynamic_cast преобразование во время выполнения
reinterpret преобразование между несовместимыми типами
const_cast снятие с константы модификатора const
0
ниначмуроФ
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
23.04.2012, 11:50 3
Цитата Сообщение от panicwassano Посмотреть сообщение
Страуструп пишет, что они опасны, и лучше пользоваться приведением типов в стиле Си
он пишет наоборот - приведение в стиле С опаснее, тк сложнее отслеживать вид преобразования)


dynamic_cast - определяет, принадлежит ли объект некоторого типа некоторой иерархии
reinterpret_cast - нужен для низкоуровневых приведений (преобразования не родственных типов)
static_cast - нужен для явных приведений типов (преобразования родственных типов)
const_cast - нужен для снятия константности объекта
1
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
23.04.2012, 12:00 4
По словам Страуструпа, static_cast<...> специально так уродливо выглядит, чтобы его легко можно было заметить в коде, т.к. с кастами связано довольно много трудноуловимых ошибок.
0
ниначмуроФ
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
23.04.2012, 12:05 5
Цитата Сообщение от OrmaJever Посмотреть сообщение
Читал что этот вариант пришёл из Си, а в C++ предусмотрены 4 функции, но в чём отличие-то?
Мэйерс:
1) гораздо легче найти в коде
2) более узко специализированное назначение каждого оператора дает возможность компиляторам дигностировать ошибки их использования
0
23.04.2012, 12:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.04.2012, 12:05
Помогаю со студенческими работами здесь

Выражение должно иметь тип класса
Вот задание 1. Используя структуру, созданную в предыдущей работе, объявить одномерный массив...

Невозможно сослаться на тип через выражение
using System; using System.Collections.Generic; using System.Linq; using System.Text; using...

Выражение должно иметь тип класса
Есть класс матрица, содержащий следующие поля: int rows, cols;//количество строк и столбцов...

Выражение должно иметь тип указателя
if (Settings::Misc::misc_Bhop) { if (pCmd-&gt;buttons &amp; IN_JUMP &amp;&amp; !(!flag-&gt;GetMoveType &amp;...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru