Dynamic_Cast C++

Dynamic Cast C



Die dynamische Umwandlung in der Programmiersprache C++ wird in diesem Artikel besprochen. Zunächst müssen wir den Begriff des Castings und viele Arten des Castings verstehen. Das Ändern des Datentyps einer Variablen wird als Casting bezeichnet. Casting wird in der Programmiersprache C++ in zwei Kategorien unterteilt: implizites Casting und explizites Casting.

Datentypkonvertierung in C++:

Type Casting ist das Verfahren zum Ändern des Datentyps in einen anderen Datentyp. In der Programmiersprache C++ gibt es zwei Arten von Casting oder Typkonvertierung: implizites und explizites Casting. Automatisierte Typkonvertierung ist ein anderer Name für implizite Typumwandlung. Es wird vom Compiler während der Echtzeitkompilierung durchgeführt und erfordert keine Benutzereingaben oder -aktionen. Wenn ein Ausdruck zwei Arten von Datentypen enthält, tritt diese Form der Umwandlung auf. Zum Beispiel:

  Grafische Benutzeroberfläche, Text, Anwendungsbeschreibung automatisch generiert







Im angegebenen Code können wir sehen, dass eine Integer-Variable und eine Zeichenvariable in den letzten Zeilenausdruck eingefügt werden und der Wert der Integer-Variable „i“ geändert wird. Das ASCII-Zahlenäquivalent von „a“ wird in einen Zeichenwert konvertiert und zum ganzzahligen Wert der Variablen „i“ in dieser Anweisung addiert. Wenn der Wert der Variablen „i“ gedruckt wird, ist das Ergebnis die Summe dieser beiden Werte. Der Compiler wandelt den Datentyp der Zeichenvariablen automatisch in einen Integer-Datentyp um, indem er ihn in den ASCII-Standardwert des Alphabets auf der rechten Seite konvertiert, was ein großartiges Beispiel für eine implizite oder automatisierte Typkonvertierung zur Laufzeit ist.



Nun, wenn es um die explizite Typumwandlung oder Typkonvertierung geht, handelt es sich nicht um einen automatisierten Prozess; Der Benutzer muss einen Datentyp einer Variablen im Code manuell in einen anderen Variablentyp konvertieren. Die Datentypen sind normalerweise hierarchisch angeordnet, basierend auf ihrem Speicherplatz und der Menge an Informationen, die sie aufnehmen können. Wenn also ein Datentyp niedrigerer Ordnung zum Speichern von Informationen verwendet wird, aber in einen Datentyp höherer Ordnung umgewandelt werden muss, damit der Informationsverlust minimiert und immer mehr Informationen gespeichert werden können, ist eine explizite Typumwandlung oder Typkonvertierung üblich erledigt. Da beispielsweise eine Variable vom Typ Integer keine Werte nach dem Dezimalkomma speichern kann, gehen möglicherweise einige Informationen verloren, wenn wir weiterhin Integer-Variablen verwenden. Um diesen Verlust zu vermeiden, wandeln wir die Integer-Variable in eine Float-Variable um, speichern Werte nach dem Komma und verhindern Informationsverlust. Die explizite Typkonvertierung in der Programmiersprache C++ kann auf zwei Arten erfolgen: über Zuweisung oder durch Verwendung des Cast-Operators. Die Zuweisungsumwandlung erfolgt in einem Codeausdruck, und die Syntax für diesen Ausdruck wird unten bereitgestellt.



# „(Datentyp) Ausdruck“

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





Nun schauen wir uns die Art der Konvertierung an, die von den Cast-Operatoren in der Programmiersprache C++ durchgeführt wird. Cast-Operatoren werden auch als unäre Operatoren bezeichnet, die eine Variable zwingen, ihren Datentyp von einem vorhandenen in einen anderen zu ändern. Es gibt vier Arten von Casting-Operatoren: Static Cast, Dynamic Cast, Const Cast und Re-Interpreting Cast.

Dynamisches Casting in C++:

Dynamisches Casting in der Programmiersprache C++ basiert auf einem Konzept namens RTTI (Run Time Type Identification). RTTI ist eine Funktion, die in mehreren Programmiersprachen wie C/C++, Ada und Object Pascal vorhanden ist. Run-Time Type Identification or Information ist eine Funktion, die Informationen bezüglich der Details des Datentyps eines Objekts zur Laufzeit eines Programms identifiziert und extrahiert. Diese Funktion bietet einen sicheren Pfad für Type-Casting-Methoden wie die „typeid“-Funktion oder das dynamische Type-Casting. Es erkennt die Datentypinformationen zur Laufzeit und unterstützt die Konvertierung des Datentyps, wenn die Operatoren im Spiel sind.



Dynamisches Casting wird hauptsächlich in C++ für laufzeitsicheres Downcasting verwendet. Um mit der dynamischen Umwandlung arbeiten zu können, muss die Basisklasse über eine virtuelle Funktion verfügen. Dynamic Cast funktioniert nur mit polymorphen Basisklassen, da es diese Informationen verwendet, um sicheres Downcasting zu bestimmen. Ein dynamischer Cast-Operator führt dynamisches Casting durch. Nachdem wir nun die Konzepte im Zusammenhang mit dynamischem Casting kennen, können wir uns dem Implementierungsteil zuwenden. Schauen wir uns zunächst die Syntax für die Verwendung von dynamischem Casting in der Programmiersprache C++ an, die unten geschrieben ist:

# „dynamic_cast (Ausdruck)“

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

Nachdem wir nun wissen, wie der dynamische Cast-Operator verwendet und die Parameter zum Konvertieren von Datentypen von Variablen ausgefüllt werden, können wir ihn zum Konvertieren von Datentypen von Variablen verwenden.

Verwenden der dynamischen Cast-Methode in Ubuntu 20.04:

Um dieses Konzept zu implementieren, müssen wir mit mehreren Klassen arbeiten, um Objekte der Klasse durch Vererbung zu konvertieren. Dazu müssen wir zunächst wissen, dass die C++-Programmdatei in der Ubuntu-Umgebung mit der Erweiterung „.cpp“ gespeichert ist. Um diese Datei auf unserem Desktop zu erstellen, öffnen Sie also ein Terminal und geben Sie „cd Desktop“ auf dem ein Befehlszeile, drücken Sie dann die Eingabetaste und geben Sie „touch filename .cpp“ ein, um eine Datei mit der Erweiterung „.cpp“ zu erstellen. Jetzt schreiben wir einen Code in diese Datei, um eine Basisklasse und zwei abgeleitete Klassen zu erstellen, und im Treibercode verwenden wir den dynamischen Umwandlungsoperator.

  Grafische Benutzeroberfläche, automatisch generierte Textbeschreibung

Beenden Sie die Datei, nachdem Sie auf die Schaltfläche Speichern geklickt haben. Kehren Sie zum Terminal zurück und erstellen Sie die Datei mit dem Befehl „g++“ mit Ihrem Dateinamen und der Erweiterung „.cpp“. Mit diesem Befehl wird eine Datei mit der Erweiterung „.out“ erstellt. Sie können diese Datei jetzt ausführen, indem Sie „./“ gefolgt von Ihrer Erweiterung „.out“ eingeben.
  Textbeschreibung automatisch generiert

In diesem Programm speichert der Basisklassenzeiger abgeleitete Objekte der Klasse 1 (d1). Die dynamische Casting-Basisklasse, der Zeiger, behielt das Derived1-Objekt bei und ordnete es der abgeleiteten Klasse 1 zu, die ein gültiges dynamisches Casting bereitstellte.

Fazit :

Dieser Artikel lehrte uns die Typumwandlungsmethode, die in der Programmiersprache C++ verwendet wird. Auch die Art des Castings wurde ausführlich besprochen, und wir konzentrierten uns auf die Notwendigkeit, warum wir solche Methoden in der C++-Programmierung verwenden. Wir haben die Hilfsfunktion besprochen, die bei der Konvertierung des Datentyps von Variablen hilft, indem sie Informationen abruft und auf korrekte Konvertierung namens RTTI überprüft. Wir haben auch das Konzept der dynamischen Umwandlung implementiert, indem wir den dynamischen Umwandlungsoperator in einem Ausdruck in der Programmiersprache C++ in der Ubuntu 20.04-Umgebung verwendet haben.