Teil 1: Grundlagen


Typkonvertierungen

Mittels Typkonvertierung kann der ursprüngliche Datentyp, z.B. einer Variable oder eines Zeigers, in einen anderen Datentyp konvertiert werden. Wir werden uns in diesem Kapitel ansehen, wie solche Typkonvertierungen explizit durchgeführt werden können und wie die automatische Typkonvertierung arbeitet.

C++ bietet folgende Typkonvertierungen:

const_cast<DTYP>(AUSDRUCK)
static_cast<DTYP>(AUSDRUCK)
dynamic_cast<DTYP>(AUSDRUCK)
reinterpret_cast<DTYP>(AUSDRUCK)

DTYP ist der neue Datentyp, in den AUSDRUCK konvertiert werden soll. Jede dieser Typkonvertierung wird für eine spezielle Konvertierung eingesetzt.

const_cast Konvertierung

Die const_cast Konvertierung dient dazu, den const oder volatile Modifizierer von einem Datentyp zu entfernen oder ihn hinzuzufügen (volatile wird später noch erklärt).

static_cast Konvertierung

Die static_cast Konvertierung wird eingesetzt, um zwischen Ganzzahl-Datentypen und Gleitkomma-Datentypen zu konvertieren oder einen void-Zeiger in einen beliebigen anderen Zeiger zu konvertieren.

reinterpret_cast Konvertierung

Die reinterpret_cast Konvertierung wird zum einen für die Konvertierung zwischen verschiedenen Zeigertypen und zum anderen für die Konvertierung von Ganzzahlen in Zeiger und umgekehrt eingesetzt.

dynamic_cast Konvertierung

Die dynamic_cast Konvertierung wird später im Anschluss an die Behandlung von abgeleiteten Klassen beschrieben, da sie nur in diesem Zusammenhang von Bedeutung ist. Sie ist nur der Vollständigkeit wegen an dieser Stelle erwähnt.

Automatische Typkonvertierungen (Promotions)

Viele 'alltägliche' Typanpassungen kann der Compiler automatisch vornehmen, wenn dadurch keine Information verloren geht.

Integral Promotion

Werte vom Datentyp char, unsigned char, signed char, unsigned short und signed short können vom Compiler auf den Datentyp int erweitert werden, wenn dadurch der gesamte Wertebereich des Original-Datentyps abgedeckt wird. Ist dies nicht der Fall, so wird eine Anpassung auf einen unsigned int Datentyp versucht. Ebenfalls kann ein bool Wert noch in einen int Wert konvertiert werden, wobei für true gleich 1 und für false gleich 0 verwendet wird.

Floating-Integral Konvertierung

Ein Gleitkommawert kann in einen Ganzzahlwert konvertiert werden, wobei die Nachkommastellen einfach abgeschnitten werden.

Zeiger Konvertierungen

Ein Zeiger eines beliebigen Datentyps kann immer in einen void-Zeiger (typloser Zeiger) konvertiert werden. Außerdem kann ein Zeiger auf eine abgeleitete Klasse stets in einen Zeiger auf die entsprechende Basisklasse konvertiert werden. Dieser Sachverhalt spielt später noch eine wichtige Rolle.



Copyright © cpp-tutor.de
Impressum &Datenschutz