Wann sollte man reinterpret_cast in C++ verwenden und wie unterscheidet er sich von anderen Casts?
Hallo Kollegen! Ich lerne C++ und habe mich bereits gut mit static_cast und dynamic_cast vertraut gemacht. Aber reinterpret_cast bereitet mir Fragen und sogar Angst. Ich verstehe, dass dies eine "böse" Konvertierung ist, die einfach Bits neu interpretiert, aber wann sollte man sie wirklich anwenden?
Ich habe gesehen, wie jemand im Code Folgendes gemacht hat:
```cpp
int* p = new int(42);
char* cp = reinterpret_cast(p);
```
Aber wozu? Man könnte doch einfach die Adresse nehmen und damit arbeiten. Oder noch ein Beispiel mit der Konvertierung eines Funktionszeigers:
```cpp
typedef void (*FuncPtr)();
FuncPtr f = reinterpret_cast(0x12345678);
```
Ist das überhaupt legal? Mir scheint, dass reinterpret_cast so etwas wie ein Hack ist, der das Typsystem verletzt. Aber ich weiß, dass es im Standard existiert, also muss es legitime Anwendungen haben.
Könnt ihr mir helfen?