Unterschied zum Casting
-
Ach, gehts doch implizit?

-
Knecht schrieb:
Das erste ist ein C-Cast. Den sollte man in C++ meiden, da er nicht Typensicher ist.
Was heißt das?
-
Bashar schrieb:
Knecht schrieb:
Das erste ist ein C-Cast. Den sollte man in C++ meiden, da er nicht Typensicher ist.
Was heißt das?
Typsicherheit ist wohl auch grade so ein Buzzword mit dem man toll angeben kann!
-
Michael E. schrieb:
Ein Konstruktor von float? Nee, lass ma.
Wieso?
-
Knecht schrieb:
Das erste ist ein C-Cast. Den sollte man in C++ meiden, da er nicht Typensicher ist.
Das zweite ist, wie Du ja bereits erkannt hast, ein Konstruktor und auch der Richtige, weil Typsicher Weg in C++.
Viele Grüße
KnechtDas erste ist ein C-Cast. Das zweite ist ein function style cast und keinesfalls zwingend ein Konstruktoraufruf (sowenig wie ein C-Cast keinen Konstruktoraufruf bewirkt, wenn dieser anzuwenden ist). Es gibt keine semantischen Unterschiede zwischen beiden. Der Funktionstylecast tendiert dazu etwas weniger kritisch zu sein, denn die besonders häufig gefährlichen Konvertierungen sind solche mit Pointern oder Referenzen, und dafür wäre dann ein typedef erforderlich, da ein function style cast nur einfache Ids erlaubt.
-
camper schrieb:
Der Funktionstylecast tendiert dazu etwas weniger kritisch zu sein, denn die besonders häufig gefährlichen Konvertierungen sind solche mit Pointern oder Referenzen, und dafür wäre dann ein typedef erforderlich, da ein function style cast nur einfache Ids erlaubt.
Wobei ich mich frage, was folgendes ist:
(unsigned int)(x)Ist das jetzt C Cast oder functional notation?
-
C-Style natürlich

-
Und wieso? Gibt es da Prioritäten und sowas in der Art?
-
Die einzige Stelle, an der zusätzliche Klammern nicht an der Bedeutung verändern, sind Ausdrücke (und entsprechend Deklaratoren). Typen kann man nicht einfach umklammern (außer natürlich man will einen C-Style-Cast).
-
groovemaster schrieb:
Und wieso? Gibt es da Prioritäten und sowas in der Art?
Du meinst, wenn du das hier hast? _
(T)(expr)Dann kann das nur ein C-Style cast sein, denn (T) ist ja kein Typ, und nur Ausdrücke darfst du nach Belieben Klammern.