Avatar ·

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

Hallo! Ich habe gerade angefangen, C++ zu lernen, und komme mit der Typumwandlung überhaupt nicht klar. Es gibt anscheinend vier verschiedene Operatoren: static_cast, dynamic_cast, const_cast und reinterpret_cast. Aber wann man welchen verwenden soll – völliges Durcheinander.\n\nZum Beispiel möchte ich ein double in ein int umwandeln. Kann ich nicht einfach (int)value schreiben, wie in C? Wozu brauche ich static_cast?\n\nOder diese Situation: Ich habe eine Klassenhierarchie und möchte einen Zeiger auf eine Basisklasse in einen Zeiger auf eine abgeleitete Klasse umwandeln. Ich habe gehört, dass man dafür dynamic_cast verwendet, aber das funktioniert nur mit virtuellen Funktionen. Was ist, wenn es keine gibt? Kann ich static_cast verwenden?\n\nAußerdem verwirrt mich const_cast. Ich weiß, dass er die Konstantheit "entfernen" kann. Aber ist das nicht gefährlich? Und wozu sollte man überhaupt ein konstantes Objekt ändern müssen?\n\nUnd das Schlimmste