Was ist der Unterschied zwischen regular cast, static_cast und dynamic_cast in C++?
Hallo Kollegen! Ich lerne C++ und bin bei den Typumwandlungen verwirrt. In Lehrbüchern steht oft: "Vermeiden Sie C-style cast", aber es wird nicht erklärt, warum. Ich schreibe eine einfache Klassenhierarchie: Es gibt eine Basisklasse `Shape` und abgeleitete Klassen `Circle` und `Rectangle`. Wenn ich versuche, einen Zeiger auf `Shape*` in `Circle*` umzuwandeln, verwende ich den normalen C-style cast: `(Circle*)shape_ptr`. Es scheint zu funktionieren, aber der Compiler meckert manchmal oder das Programm stürzt ab. Dann habe ich von `static_cast` und `dynamic_cast` erfahren.
Hier ist ein Beispiel, das mich verwirrt:
```cpp
class Shape { public: virtual ~Shape() {} };
class Circle : public Shape { public: void drawCircle() { /* ... */ } };
class Rectangle : public Shape { public: void drawRect() { /* ... */ } };
void process(Shape* s) {
// Variante 1: C-style cast
Circle* c1 = (Cir