![]() |
Зачем он нужен понятно, к примеру указатель в int конвертнуть:
char *p; int v = reinterpret_cast<int>(p); Но то-же самое можно сделать и просто: int v = (int)(p); Так зачем писать такое длинное слово? Приведите пример в котором reinterpret_cast работает а простой "cast" нет. |
На мой взгляд, имеет смысл рассматривать данный оператор только вместе с остальными (dinamic_cast и т.д.). Его использование убирает некоторую неоднозначность, даёт точно понять, что программер хотел получить проcто биты (от машинного адреса).
Код:
class A; |
Ну вобщем как я понял, обычное приведение типа
int v = (int)(p); можно считать "тяжелым" наследием С. А С++ введя кучу всякой всячины, dinamic_cast и пр. и пр. для единообразия ввел и reinterpret_cast. Хотя особой нужды в нем видимо нет. Спасибо за разъяснение. |
bilytur
reinterpret_cast не снимает константности, в отличие от сишного приведения. Для этого есть const_cast, который изредка даже оправдан в использовании. А вообще, любые приведения помимо автоматических - вредны по определению. Код:
int main() |
На счет константности не знал, спасибо.
|
Время: 02:24. |
Время: 02:24.
© OSzone.net 2001-