Twitter und Facebook-Anbindung
X
Tweet Follow @twitterapi
!!! Anbindung an twitter und facebook öffnen !!!

Wenn Ihnen mein Online-Buch gefällt,
dann bedanken Sie sich doch mit einer kleinen Spende...

20.1.4 dynamic Casting

20.1.4 dynamic Casting

Ich hatte bereits erwähnt, dass es bisher keinerlei Prüfmechanismen gab, welche eine Konvertierung in nicht voneinander abhängige Typen, verhindert hat und genau hier setzt die dynamische Typumwandlung an. Wenn man jetzt versucht aus einem Zeiger auf ein Fahrzeug, ein Zeiger auf ein Motorrad zu wandeln, dann wird zu mindestens geprüft, ob ein Motorrad in irgend einer Form von Fahrzeug abgeleitet wurde und es somit möglich sein kann, dass es sich bei dem Speicherbereich, auf welchen verwiesen wird, um ein Motorrad handeln kann. Dynamisches Casting funktioniert also nur bei polymorphen Klassen.

 1
 2
 3
 4
					
CMotorrad* pMotorrad1	= new CMotorrad();
CFahrzeug* pFahrzeug	= pMotorrad1;			// hoch casten

CMotorrad* pMotorrad2	= dynamic_cast<CMotorrad*>(pFahrzeug);	// runter casten
					

Diese Art der Typumwandlung wird eher selten gemacht, da sie recht teuer ist. Abgesehen von den zusätzlichen Prüfungen zur Laufzeit, muss jedes Objekt zusätzliche Typinformationen mit sich herumtragen, damit die Überprüfung weiß, was sich ursprünglich hinter einem Zeiger verborgen hat (Objekte benötigen mehr Speicherplatz). Sie sollten sich also von diesem Mechanismus distanzieren und ihn nur im Notfall verwenden.

Zum Seitenanfang
Zum Inhaltsverzeichnis

© Copyright by Thomas Weiß, 2009 - 2012