Avatar ·

Wann sollte man static_cast, dynamic_cast, const_cast und reinterpret_cast in C++ verwenden?

Hallo zusammen! Ich habe angefangen, C++ zu lernen und bin auf verschiedene Typumwandlungsoperatoren gestoßen. Ich weiß, dass es in C eine einfache Umwandlung in Klammern gibt, aber es heißt, dass man in C++ spezielle Operatoren verwenden sollte: `static_cast`, `dynamic_cast`, `const_cast` und `reinterpret_cast`. Ich bin völlig verwirrt, wann man welchen anwenden soll.\n\nZum Beispiel habe ich diesen Code:\n\n```cpp\nclass Base {\npublic:\n virtual void show() { std::cout << "Base"; }\n};\n\nclass Derived : public Base {\npublic:\n void show() override { std::cout << "Derived"; }\n void extra() { std::cout << "Extra"; }\n};\n\nint main() {\n Base* basePtr = new Derived();\n \n // Wie konvertiert man Base* korrekt zu Derived*?\n Derived* d1 = (Derived*)basePtr; // C-style cast — funktioniert, aber ist das richtig?\n \n int a = 10;\n d