Konvertierungen und RTTI
Möglichkeiten der Typkonvertierung
- dynamic_cast<T>(arg)
- Konvertierung eines Zeigers oder einer Referenz auf ein Objekt
einer Basisklasse in einen Zeiger bzw. Referenz auf ein Objekt einer
abgeleiteten Klasse, wenn das referenzierte Objekt tatsächlich vom
abgeleiteten Typ ist
- Konvertierungen in der Ableitungshierarchie nach oben (statische)
werden bereits beim Compilieren eingesetzt und funktionieren analog
static_cast
- Konvertierungen in der Ableitungshierarchie nach unten (dynamische)
werden erst zur Laufzeit berechnet
- arg und T müssen entweder beide einen Pointer oder beide
einen Referenz-Typen haben
- wenn arg und T Pointer sind, und die Konvertierung kann
nicht durchgeführt werden, wird ein NULL-Zeiger zurückgeliefert
- wenn arg und T Referenzen sind, und die Konvertierung kann
nicht durchgeführt werden, wird in der Regel eine Exception (bad_cast)
ausgelöst
- Sonderfall: wenn T ein void* ist, muß arg ebenfalls
ein Pointer sein; in dem Fall wird ein Pointer geliefert, der auf das komplette
Objekt zeigt, also das Objekt der Klasse, die sich in der Hierarchie am
weitesten unten befindet