Was ist der Unterschied zwischen static_cast, dynamic_cast, reinterpret_cast und C-style Cast in C++?
Hallo zusammen! Ich habe gerade angefangen, C++ zu lernen, und komme mit den Type Casts überhaupt nicht klar. In Büchern und Foren wird über `static_cast`, `dynamic_cast`, `reinterpret_cast` und auch über den alten C-style Cast in runden Klammern geschrieben. Wenn ich in C programmiere, schreibe ich einfach `(int)myDouble`, und alles funktioniert. Aber in C++ sagt man mir, dass das schlecht ist und ich den C++-Stil verwenden soll.
Zum Beispiel habe ich eine Klassenhierarchie:
```cpp
class Base { public: virtual ~Base() {} };
class Derived : public Base { public: void foo() {} };
```
Ich möchte `Base*` in `Derived*` umwandeln. Anscheinend kann man `(Derived*)basePtr` schreiben, und das wird kompiliert. Aber was ist besser zu verwenden? Ich habe gehört, dass `dynamic_cast` `nullptr` zurückgeben kann, wenn die Umwandlung fehlschlägt, während `static_cast` das nicht tut. Und es gibt noch `reinterpr
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen