Umwandeln
Die Programmiersprache C++ setzt voraus, dass, wenn eine Klasse von einer Basisklasse abgeleitet ist, die virtuelle Funktionen enthält, einen Zeiger auf diesen Basisklassen des Arrays verwendet werden kann, um Implementierungen der virtuellen Funktionen aufrufen befindend im Objekt der abgeleiteten Klasse.Eine Klasse, die virtuelle Funktionen enthält, wird manchmal als „eine polymorphe Klasse“.
Da eine abgeleitete Klasse fertig die Definitionen aller Basisklassen enthält, von der sie abgeleitet ist, empfiehlt es sich, einen Zeiger in der Klassenhierarchie zu allen Basisklassen umzuwandeln.Wenn ein Zeiger auf eine Basisklasse, kann es sich, dass Sie den Zeiger entlang der Hierarchie umzuwandeln.Es ist sicher, dass das Objekt, auf das verwiesen wird, tatsächlich von einem Typ ist, der aus der Basisklasse abgeleitet ist.In diesem Fall muss das eigentliche Objekt im „vollständige Objekt“. Der Zeiger auf die Basisklasse wird gesagt, um zu einem „Unterobjekt“ des vollständigen Objekts zu veranschaulichen.Betrachten Sie beispielsweise die Klassenhierarchie, die in der folgenden Abbildung gezeigt wird.
Klassenhierarchie
Ein Objekt vom Typ C könnte wie in der folgenden Abbildung dargestellt visualisiert werden.
C - Klasse mit B-Unterobjekt und ein Unterobjekt
Erstellt eine Instanz der Klasse C, gibt es ein B und ein Unterobjekt A Unterobjekt.Die Instanz von C, einschließlich A und die B Unterobjekte, ist das „vollständige Objekt“.
Verwenden von Laufzeit-Typeninformation sicherzustellen, besteht die Möglichkeit, ob ein Zeiger sich tatsächlich zu einem vollständigen Objekt wird als auch sicher umgewandelt werden kann, um auf ein anderes Objekt in seiner Hierarchie zu veranschaulichen.Der dynamic_cast-Operator kann verwendet werden, um diese Typen von Typumwandlungen durchzuführen.Sie sind auch die Laufzeitüberprüfung aus, die erforderlich ist, die Operation safe erstellt.
Bei der Konvertierung von nicht polymorph Typen, können Sie den Operator ( static_cast diesem Thema wird der Unterschied zwischen den statischen und dynamischen Umwandlungs konvertierungen geeignet ist, und wenn sie jeweils zu verwenden).
In diesem Abschnitt werden die folgenden Themen behandelt: