cast bei C++
annA
- programmiertechnik
0 Frank Schönmann0 annA
Hallo zusammen,
welche der beiden Cast-Möglichkeiten zieht ihr/man vor?
Und was ist der Unterschied?
a) float a = (float) x;
b) float a = static_cast<float>(x)
Viele Dank und viele Grüße
annA
hi!
welche der beiden Cast-Möglichkeiten zieht ihr/man vor?
Und was ist der Unterschied?
a) float a = (float) x;
b) float a = static_cast<float>(x)
Der Cast "(Typ)Ausdruck" in C wurde durch vier verschiedene Casts
in C++ ersetzt. Ein Grund, die neuen Casts zu verwenden, ist, dass
die im Quelltext leichter zu finden sind, wohingegen man die alten
Casts leicht übersehen kann.
Der zweite Vorteil von C++-Casts ist, dass sie spezieller auf die
verschiedenen Operationen zugeschnitten sind, die man damit ausführen
kann als C-Casts, wo es nur eine Syntax für alle Arten von Casts
gibt. Beispielsweise gibt es in C++ einen const_cast<T>, der nur die
Konstanz eines Objekts beeinflusst, und nichts anderes. Die anderen
Casts wie zb. static_cast<T> tasten die Konstanz nicht an, so dass
man hierbei weniger Fehler machen kann.
Darüber hinaus sind mit C++-Casts Operationen möglich, die mit Casts
in C nicht möglich (da nicht nötig) waren. dynamic_cast<T> zum
Beispiel dient dazu, ein Objekt innerhalb der Klassenhierarchie zu
casten. Ein C-Cast für einen solchen Zweck würde keinen Sinn ergeben
-- aber auch keinen Fehler erzeugen!
C++-Casts sind also leichter zu entdecken, haben einen größeren
Funktionsumfang und können in gewissem Maße Typprüfungen durchführen,
so dass Fehler bereits zur Kompilierzeit auffallen.
bye, Frank!
Hi Frank,
vielen Dank für diese hilfreiche Antwort!
Schönen Tag
Gruss
annA