reinterpret_cast
|
Пользователь Сообщения: 135 |
Зачем он нужен понятно, к примеру указатель в int конвертнуть:
char *p; int v = reinterpret_cast<int>(p); Но то-же самое можно сделать и просто: int v = (int)(p); Так зачем писать такое длинное слово? Приведите пример в котором reinterpret_cast работает а простой "cast" нет. |
|
Отправлено: 03:36, 05-05-2004 |
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать На мой взгляд, имеет смысл рассматривать данный оператор только вместе с остальными (dinamic_cast и т.д.). Его использование убирает некоторую неоднозначность, даёт точно понять, что программер хотел получить проcто биты (от машинного адреса).
class A; class B : public A; A a; B* b = (B*)&a; <-- фиг его знает, чего надо: то ли адрес как класса А, то ли как В (хотя вероятно, что имелось в виду приведение полиморфных типов) B* b = reinterpret_cast<B>(&a); <-- понятно, нужен адрес а как класса А (хотя мы явно нарываемся на ошибку, для использования методов А надо делать dinamic_cast) |
Отправлено: 09:05, 05-05-2004 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать Ну вобщем как я понял, обычное приведение типа
int v = (int)(p); можно считать "тяжелым" наследием С. А С++ введя кучу всякой всячины, dinamic_cast и пр. и пр. для единообразия ввел и reinterpret_cast. Хотя особой нужды в нем видимо нет. Спасибо за разъяснение. |
Отправлено: 03:03, 06-05-2004 | #3 |
редкий гость Сообщения: 1696
|
Профиль | Сайт | Отправить PM | Цитировать bilytur
reinterpret_cast не снимает константности, в отличие от сишного приведения. Для этого есть const_cast, который изредка даже оправдан в использовании. А вообще, любые приведения помимо автоматических - вредны по определению. |
------- Отправлено: 02:03, 07-05-2004 | #4 |
Пользователь Сообщения: 135
|
Профиль | Отправить PM | Цитировать На счет константности не знал, спасибо.
|
|
Отправлено: 04:06, 07-05-2004 | #5 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
|