annA: cast bei C++

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

  1. 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.
    1. Hi Frank,

      vielen Dank für diese hilfreiche Antwort!

      Schönen Tag

      Gruss
      annA