Frank Schönmann: cast bei C++

Beitrag lesen

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!

--
Never argue with an idiot. He will lower you to his level and then
beat you with experience.