Dynamic_cast C ++

Dynamic_cast C ++
Die dynamische Besetzung in der C ++ - Programmiersprache wird in diesem Artikel erörtert. Zunächst müssen wir den Begriff des Gießens und viele Arten des Gießens verstehen. Der Prozess der Änderung des Datentyps einer Variablen wird als Casting bezeichnet. Das Casting ist in zwei Kategorien in der Programmiersprache C ++ unterteilt: implizites Casting und explizites Casting.

Datentypkonvertierung in C ++:

Das Typ Casting ist das Verfahren zur Änderung des Datentyps auf einen anderen Datentyp. In der C ++ - Programmiersprache gibt es zwei Arten von Guss- oder Typumwandlungen: implizites und explizites Casting. Die automatisierte Konvertierung vom Typ ist ein weiterer Name für implizite Typen. Es wird vom Compiler während der Echtzeitkompilierung durchgeführt und benötigt keine Benutzereingabe oder Aktion. Wenn in einem Ausdruck zwei Arten von Datentypen enthält, tritt diese Form des Gießens auf. Zum Beispiel:

Im angegebenen Code können wir sehen, dass eine Ganzzahlvariable und eine Zeichenvariable im letzten Zeilenausdruck eingefügt werden, und der Wert der Ganzzahlvariablen „I“ wird geändert. Das ASCII -Zahl entspricht „A“ in einen Zeichenwert und wird dem Ganzzahlwert der Variablen „I“ in dieser Anweisung hinzugefügt. Wenn der Wert der Variablen „I“ gedruckt ist, ist das Ergebnis insgesamt beider Werte. Der Compiler transformiert automatisch den Datentyp der Zeichenvariablen in einen Ganzzahl -Datentyp, indem er ihn in den ASCII -Standardwert des Alphabets rechts konvertiert. Dies ist ein gutes Beispiel für die implizite oder automatisierte Konvertierung in der Laufzeit.

Wenn es nun um explizites Gießen oder Typumwandlungen geht, ist es kein automatisierter Prozess. Der Benutzer muss einen Datentyp einer Variablen manuell in einen anderen Typ von Variablen im Code konvertieren. Die Datentypen sind normalerweise in einer Hierarchie angeordnet, basierend auf ihrem Speicherplatz und der Menge an Informationen, die sie halten können. Wenn also ein Datentyp mit niedrigerer Ordnung verwendet wird, um Informationen zu speichern, aber in einen Datentyp höherer Ordnung umgewandelt werden muss, damit der Informationsverlust minimiert werden kann und immer mehr Informationen gespeichert werden können, ist explizite Typen oder Typumwandlungen üblicherweise Erledigt. Da beispielsweise eine Ganzzahl -Typ -Variable die Werte nach dem Dezimalpunkt nicht speichern kann, können wir einige Informationen verlieren, wenn wir weiterhin Ganzzahlvariablen verwenden. Um diesen Verlust zu vermeiden, wandeln wir die Ganzzahlvariable in eine Float -Variable um, speichern Sie Werte nach Dezimalpunkten und verhindern Sie Informationsverlust. Die explizite Typumwandlung in der C ++ - Programmiersprache kann auf zwei Arten durchgeführt werden: per Zuordnung oder durch Verwendung des Gussbetreibers. Die Zuordnungskonvertierung erfolgt in einem Code -Ausdruck, und die Syntax für diesen Ausdruck ist unten bereitgestellt.

# "(Datentyp) Ausdruck"

Im obigen Code müssen wir einen gültigen Datentyp in die Klammer einfügen, und nach der Klammer müssen wir die Variable oder den Ausdruck schreiben, die wir in den in der Halterung geschriebenen Datentyp ändern möchten.

Jetzt werden wir uns mit der Art der Konvertierung der Gussbetreiber in der C ++ - Programmiersprache befassen. Gussbetreiber werden auch als Unary -Operatoren bezeichnet, die eine Variable dazu zwingen, den Datentyp von einem vorhanden in einen anderen zu ändern. Es gibt vier Arten von Gussbetreibern: statische Besetzung, dynamische Besetzung, Konstants und Neuinterpretation der Besetzung.

Dynamisches Gießen in C ++:

Das dynamische Casting in der C ++ - Programmiersprache basiert auf einem Konzept namens RTTI (Identifizierung des Laufzeittyps). RTTI ist eine Funktion, die in mehreren Programmiersprachen wie C/C ++, ADA und Object Pascal vorhanden ist. Identifizierung oder Informationen zum Laufzeittyp ist eine Funktion, die die Informationen zu den Details des Datentyps eines Objekts in der Laufzeit eines Programms identifiziert und extrahiert. Diese Funktion bietet einen sicheren Pfad für Typgussmethoden wie die Funktion "TypID" oder dynamisches Gussguss. Es erkennt die Datentypinformationen in der Laufzeit und unterstützt die Konvertierung des Datentyps, wenn die Betreiber im Spiel sind.

Dynamisches Casting wird hauptsächlich in C ++ für den Safe Down Casting für Laufzeit verwendet. Um mit der dynamischen Besetzung zu arbeiten, muss die Basisklasse eine virtuelle Funktion haben. Dynamischer Besetzung funktioniert nur mit polymorphen Basisklassen, da diese Informationen verwendet werden, um das Safe Down Casting zu bestimmen. Ein dynamischer Gussbetreiber führt dynamisches Casting durch. Nachdem wir über die Konzepte im Zusammenhang mit dynamischem Casting informiert sind, können wir uns auf den Implementierungsteil wenden. Schauen wir uns zunächst die Syntax an, um dynamisches Casting in der C ++ - Programmiersprache zu verwenden, die unten geschrieben wurde:

# "Dynamic_cast (Ausdruck)"

Im obigen Ausdruck beschreibt der erste Teil den Namen des Operators; In den Winkelklammern schreiben wir den Namen des Datentyps, den wir in unseren Ausdruck konvertieren müssen, und in den runden Klammern schreiben wir die Variable oder den Namen des Objekts, die wir konvertieren möchten.

Nachdem wir nun wissen, wie Sie den dynamischen Gussbetreiber verwenden und die Parameter zum Konvertieren von Datentypen von Variablen ausfüllen, können wir sie zum Konvertieren von Datentypen von Variablen verwenden.

Verwendung der dynamischen Gussmethode in Ubuntu 20.04:

Um dieses Konzept zu implementieren, müssen wir mehrere Klassen verwenden, um Objekte der Klasse durch Vererbung zu konvertieren. Um dies zuerst zu tun, müssen wir zunächst wissen, dass die C ++ - Programmdatei in der Ubuntu -Umgebung mit der Erweiterung gespeichert ist.CPP “, um diese Datei auf unserem Desktop zu erstellen, ein Terminal zu öffnen und" CD -Desktop "in die Befehlszeile einzugeben. Drücken Sie dann die Eingabetaste und geben Sie" Touch Dateiname "ein .CPP ”, um eine Datei mit der“ zu erstellen.CPP ”Erweiterung. Jetzt schreiben wir einen Code in dieser Datei, um eine Basisklasse und zwei abgeleitete Klassen zu erstellen. In dem Treibercode werden wir den dynamischen Gussbetreiber verwenden.

Beenden Sie die Datei, nachdem Sie auf die Schaltfläche Speichern klicken. Kehren Sie zum Terminal zurück und erstellen Sie die Datei mit dem Befehl "G ++" mit Ihrem Dateinamen und dem ".CPP ”Erweiterung. Eine Datei mit der Erweiterung “.Out “wird mit diesem Befehl erstellt. Sie können diese Datei nun durch Eingeben ausführen “./”Gefolgt von Ihrem“.OUT ”Erweiterung.

In diesem Programm speichert der Basisklassenzeiger abgeleitete Objekte der Klasse 1 (D1). In der dynamischen Gussbasisklasse behielt der Zeiger das abgeleitete Objekt bei und verteilte es der abgeleiteten Klasse 1, die gültiges dynamisches Casting lieferte.

Abschluss:

Dieser Artikel hat uns die in der C ++ - Programmiersprache verwendete Typ -Casting -Methode beigebracht. Die Art des Castings wurde ebenfalls ausführlich besprochen, und wir konzentrierten uns auf die Notwendigkeit, warum wir solche Methoden in der C ++ -Programmierung anwenden. Wir haben die Assist -Funktion diskutiert, die die Konvertierung des Datentyps der Variablen durch Abrufen von Informationen und der Überprüfung der korrekten Konvertierung namens RTTI hilft. Wir haben auch das Konzept des dynamischen Gießens implementiert, indem wir den dynamischen Gussoperator in einem Ausdruck in der C ++ - Programmiersprache in der Ubuntu 20 verwendet haben.04 Umgebung.