static_cast dynamic_cast reinterpret_cast ??
-
hi!
was macht jede funktion genau und was ist der unterschied?danke
-
Bei einem static_cast wird versucht, den Inhalt einer Variable in einem anderen Variablentyp möglichst gleich darzustellen.
Bei einem reinterpret_cast werden die von der alten Variablen belegten Bits eingelesen und genauso in die neue Variable hineingeschrieben. Verständlicherweise kann es dann zu einem ganz anderen Inhalt kommen, da die Bits ganz neu interpretiert werden.
Was ein dynamic_cast macht, weiß ich nicht.
-
Dynamischer Cast wandelt einen Datentyp zur Laufzeit des Programms um. Dazu muss es entweder ein Zeiger oder eine Referenz sein, die man übergibt. Eine Umwandlung von einer abgeleiteten in eine Basisklasse und umgekehrt ist somit möglich (Upcast/Downcast).
-
Strogij schrieb:
Dynamischer Cast wandelt einen Datentyp zur Laufzeit des Programms um. Dazu muss es entweder ein Zeiger oder eine Referenz sein, die man übergibt.
das gilt nur für polymorphe Typen, außerdem ist ein Down- bzw. Upcast mit static_cast ebenfalls möglich. dynamic_cast ermöglicht auch das Casten von Geschwister-Klassen - crosscast genannt.
-
Vielleicht sollte man sagen, dass dynamic_cast checkt ob der Cast erlaubt ist - denn das ist der Unterschied zu static_cast !
-
denn das ist der Unterschied zu static_cast !
Dabei kann es Exception verfwen wenn Mann Referenzen umwandelt
-
itman schrieb:
denn das ist der Unterschied zu static_cast !
Dabei kann es Exception verfwen wenn Mann Referenzen umwandelt
Ähm. Das Werfen einer Exception ist in C++ unabhängig vom Geschlecht des Programmierers.