Casting ()
Dieser Teil von ManderC ist noch in Bearbeitung
Der explizite Casting-Operator wird verwendet, um dem Compiler eine gewünschte Um-Interpretation gegebener Daten mitzuteilen. Bei den eingebauten arithmetischen Typen von C und C++ führt dies gegebenfalls zu einer arithmetischen Umwandlung.
Casting möglich:
- Typen, die den eingebauten arithmetischen Typen von C und C++ entsprechen (
void,boolund die arithmetischen Typen wieintundfloat), können ineinander umgewandelt werden. Man beachte, dass je nach Mächtigkeit eines Typs möglicherweise Werte verloren gehen können, Beispielsweise beim Casting einer Fliesskommazahl auf einen Integer-Wert. - Integer-Typen können in Pointer gecastet werden und umgekehrt. Man beachte jedoch, dass dies in der modernen Programmierung als unschön betrachtet wird und aufgrund der Fehleranfälligkeit von vielen Programmierern vermieden wird. Moderne Compiler geben Warnungen aus, wenn ein solches Casting nicht explizit im Code deklariert ist.
- Pointer können in andere Pointer gecastet werden, allerdings geben moderne Compiler Warnungen aus, falls das Casting nicht explizit im Code deklariert ist.
- Die Qualifikatoren
const,volatileundrestrictkönnen beliebig hinzugefügt oder entfernt werden. - In C++ ist es möglich, einen Pointer
A*in einen PointerB*umzuwandeln, wenn die KlasseBvon der KlasseAabgeleitet ist. - In C++ ist es möglich, mittels Konstruktoren Umwandlungen von beliebigen Typen zu definieren.
- Durch Operatorenüberladung können in C++ fast beliebige Castings definiert werden.
Casting nicht möglich:
- Das Casten eines Nicht-Pointer-Typs auf einen Pointer ist nicht möglich. In C++ ist auch das Casten von Referenzen auf Pointer nicht möglich.
- Die Umwandlung von einem Pointer
B*in einen PointerA*ist nicht möglich, wenn die KlasseBvon der KlasseAabgeleitet ist.
Dieser Teil von ManderC ist noch in Bearbeitung
non-static member pointer kann nicht in static non-member umgewandelt werden.