static_cast (C++-Typumwandlungsoperator)

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Schlüsselwörter alphabetisch - Index


Kategorie

C++-spezifische Schlüsselwörter

Syntax

static_cast< T > (arg)

Beschreibung

In dem Ausdruck static_cast< T > (arg) muss T ein Zeiger, eine Referenz, ein arithmetischer Typ oder ein enum-Typ sein. Sowohl arg als auch T müssen zur Compilierzeit vollständig bekannt sein.

In allen Fällen, in denen ein vollständiger Typ mit den sonstigen herkömmlichen Mitteln der Programmiersprache in einen anderen Typ umgewandelt werden kann, führt die Umwandlung mit dem Operator static_cast exakt zum selben Ergebnis.

Ganzzahltypen können in Aufzählungstypen umgewandelt werden. Der Versuch, arg in einen Wert umzuwandeln, der keiner der Aufzählungskonstanten entspricht, liefert ein undefiniertes Ergebnis.

Der Nullzeiger wird in den Nullzeigerwert des Zieltyps T umgewandelt.

Ein Zeiger auf ein Objekt eines bestimmten Typs kann in einen Zeiger auf ein Objekt eines anderen Typs umgewandelt werden. Es ist zu beachten, dass allein schon das Zeigen auf ähnliche Typen Zugriffsprobleme verursachen kann, falls diese ähnlichen Typen nicht in gleicher Weise im Speicher ausgerichtet sind.

Ein Zeiger auf eine Klasse X kann explizit in einen Zeiger auf eine Klasse Y umgewandelt werden, falls X eine Basisklasse für Y ist. Eine statische Umwandlung ist nur unter folgenden Bedingungen möglich:

  • Es gibt nur eine eindeutige Umwandlungsmöglichkeit von Y nach X.
  • X ist keine virtuelle Basisklasse.

Ein Objekt kann explizit in den Referenztyp X& umgewandelt werden, falls ein Zeiger auf dieses Objekt explizit in X* umgewandelt werden kann. Das Ergebnis der Umwandlung ist ein L-Wert. Bei der Umwandlung in eine Referenz werden keine Konstruktoren oder Umwandlungsfuktionen aufgerufen.

Ein Objekt oder ein Wert kann nur dann in ein Klassenobjekt umgewandelt werden, wenn ein passender Konstruktor oder Umwandlungsoperator deklariert worden ist.

Ein Zeiger auf ein Element kann nur dann explizit in einen anderen Elementzeiger-Typ umgewandelt werden, wenn beide Typen Zeiger auf Elemente derselben Klasse oder Zeiger auf Elemente zweier Klassen, von denen die eine ohne Mehrdeutigkeit von der anderen abgeleitet ist, sind.

Wenn T eine Referenz ist, so ist das Ergebnis von static_cast< T > (arg) ein L-Wert. Das Ergebnis einer Zeiger- oder Referenzumwandlung weist auf den ursprünglichen Ausdruck.

Siehe auch