static_cast<> or C-Cast?
-
Also ich bevorzuge eigentlich immer sicher zu programmieren.
Aber die Syntax von static_cast<....>(...) vergrößert meinen Code nur.
Spricht bei einfachen Konvertierungen von int nach float etwas dagegen einen C-Cast zu verwenden?
-
Ja: Die Lesbarkeit. C++-Casts sind sehr leicht im Code zu finden, C-Casts hingegen extrem schwer.
-
Gefährlich wirds auch bei typ-abstrahierenden Sprachmitteln (Typedef, Templates, Funktionsüberladung, Laufzeitpolymorphie). Besonders im Zusammenhang mit Refactoring kann die Funktionalität eines C-Casts schnell einmal von
static_castzureinterpret_castwechseln, ohne dass man zur Kompilierzeit etwas davon merkt.Ausserdem ist es inkonsistent, "einfache" Konvertierungen anders zu behandeln als "komplizierte". Wo setzt du die Grenze? Mit
static_castist man auf der sicheren Seite. Und wenn du dauernd hin- und hercastest, machst du generell etwas falsch. Casts sollten nicht allzu oft im Code vorkommen.
-
Nexus schrieb:
Ausserdem ist es inkonsistent, "einfache" Konvertierungen anders zu behandeln als "komplizierte". Wo setzt du die Grenze? Mit
static_castist man auf der sicheren Seite. Und wenn du dauernd hin- und hercastest, machst du generell etwas falsch. Casts sollten nicht allzu oft im Code vorkommen.Nexus ich danke dir!
Da hast du recht. Die Lib will die Koordinaten in floats haben. Aber meine Klasse hatte die Koordinaten in std::size_t.Klasse umgeändert -> Casts erspart!
Danke