Dynamic_Cast C++

Dynamic Cast C



En aquest article es parlarà del repartiment dinàmic en el llenguatge de programació C++. Per començar, hem d'entendre la noció de càsting i molts tipus de càsting. El procés d'alterar el tipus de dades d'una variable es coneix com a càsting. El càsting es divideix en dues categories al llenguatge de programació C++: càsting implícit i càsting explícit.

Conversió de tipus de dades en C++:

L'emissió de tipus és el procediment d'alterar el tipus de dades a un altre tipus de dades. Hi ha dos tipus de càsting o conversió de tipus al llenguatge de programació C++: càsting implícit i explícit. La conversió de tipus automàtica és un altre nom per a la difusió de tipus implícita. El compilador la realitza durant la compilació en temps real i no necessita cap entrada ni acció de l'usuari. Quan hi ha dos tipus de tipus de dades en una expressió, es produeix aquesta forma de càsting. Per exemple:

  Interfície d'usuari gràfica, text, descripció de l'aplicació generada automàticament







En el codi donat, podem veure que una variable entera i una variable de caràcter s'insereixen a l'expressió de l'última línia i es canvia el valor de la variable entera 'i'. El nombre ASCII equivalent de 'a' es convertirà en un valor de caràcter i s'afegirà al valor enter de la variable 'i' en aquesta declaració. Si s'imprimeix el valor de la variable 'i', el resultat serà un total d'aquests dos valors. El compilador transforma automàticament el tipus de dades de la variable de caràcter a un tipus de dades enter convertint-lo al valor estàndard ASCII de l'alfabet de la dreta, que és un gran exemple de conversió de tipus implícita o automatitzada en el temps d'execució.



Ara, quan es tracta de càsting de tipus explícit o conversió de tipus, no és un procés automatitzat; l'usuari ha de convertir manualment un tipus de dades d'una variable a un altre tipus de variable del codi. Els tipus de dades solen estar organitzats en una jerarquia en funció del seu espai de memòria i de la quantitat d'informació que poden contenir. Per tant, quan s'utilitza un tipus de dades d'ordre inferior per emmagatzemar qualsevol informació, però s'ha de transformar en un tipus de dades d'ordre superior perquè es pugui minimitzar la pèrdua d'informació i es pugui emmagatzemar més i més informació, sol ser una conversió de tipus explícita o una conversió de tipus. fet. Per exemple, com que una variable de tipus enter no pot emmagatzemar valors després del punt decimal, podem perdre informació si continuem utilitzant variables senceres. Per evitar aquesta pèrdua, convertim la variable entera en una variable flotant, guardant els valors després dels decimals i evitant la pèrdua d'informació. La conversió de tipus explícita en el llenguatge de programació C++ es pot aconseguir de dues maneres: mitjançant l'assignació o utilitzant l'operador de distribució. La conversió de l'assignació es fa en una expressió de codi i la sintaxi d'aquesta expressió es proporciona a continuació.



# 'Expressió (tipus de dades)'

En el codi anterior, hem de posar un tipus de dades vàlid dins del claudàtor, i després del claudàtor, hem d'escriure la variable o expressió que volem modificar en el tipus de dades escrit dins del claudàtor.





Ara analitzarem el tipus de conversió que fan els operadors de distribució en el llenguatge de programació C++. Els operadors d'emissió també s'anomenen operadors unaris que obliguen una variable a canviar el seu tipus de dades d'una existent a una altra. Hi ha quatre tipus d'operadors d'emissió de càsting: repartiment estàtic, repartiment dinàmic, repartiment constant i reinterpretació del repartiment.

Càsting dinàmic en C++:

El càsting dinàmic en el llenguatge de programació C++ es basa en un concepte anomenat RTTI (Run Time Type Identification). RTTI és una funció present en diversos llenguatges de programació com C/C++, Ada i Object Pascal. La identificació o informació de tipus en temps d'execució és una funció que identifica i extreu la informació sobre els detalls del tipus de dades d'un objecte en el temps d'execució d'un programa. Aquesta funció proporciona un camí segur per als mètodes de llançament de tipus com la funció 'typeid' o la publicació de tipus dinàmic. Detecta la informació del tipus de dades en el temps d'execució i ajuda a la conversió del tipus de dades quan els operadors estan en joc.



El càsting dinàmic s'utilitza principalment en C++ per al càsting baix segur en temps d'execució. Per treballar amb la distribució dinàmica, la classe base ha de tenir 1 funció virtual. L'emissió dinàmica només funciona amb classes base polimòrfiques perquè utilitza aquesta informació per determinar la baixada segura. Un operador de càsting dinàmic fa càsting dinàmic. Ara que coneixem els conceptes relacionats amb el càsting dinàmic, podem anar cap a la part d'implementació. Vegem primer la sintaxi per utilitzar el càsting dinàmic en el llenguatge de programació C++, que s'escriu a continuació:

# 'dynamic_cast (Expressió)'

En l'expressió anterior, la primera part descriu el nom de l'operador; entre els claudàtors angulars, escrivim el nom del tipus de dades en què necessitem convertir la nostra expressió i, entre els claudàtors, escrivim el nom de la variable o de l'objecte que volem convertir.

Ara que sabem com utilitzar l'operador d'emissió dinàmica i emplenar els paràmetres per convertir els tipus de dades de variables, el podem utilitzar per convertir els tipus de dades de variables.

Utilitzant el mètode de llançament dinàmic a Ubuntu 20.04:

Per implementar aquest concepte, hem d'utilitzar diverses classes amb les quals treballar per convertir objectes de la classe per herència. Per tant, per fer-ho primer, primer hem de saber que el fitxer del programa C++ a l'entorn Ubuntu s'emmagatzema amb l'extensió '.cpp', de manera que per crear aquest fitxer al nostre escriptori, obriu un terminal i escriviu 'cd Desktop' a l'escriptori. línia d'ordres, després premeu Intro i escriviu 'toqueu el nom del fitxer .cpp' per crear un fitxer amb l'extensió '.cpp'. Ara escriurem un codi en aquest fitxer per crear una classe base i 2 classes derivades, i al codi del controlador, utilitzarem l'operador de llançament dinàmic.

  Interfície gràfica d'usuari, descripció de text generada automàticament

Sortiu del fitxer després de fer clic al botó desa. Torneu al terminal i creeu el fitxer amb l'ordre 'g++' amb el vostre nom de fitxer i l'extensió '.cpp'. Amb aquesta ordre es crearà un fitxer amb l'extensió '.out'. Ara podeu executar aquest fitxer introduint './' seguit de la vostra extensió '.out'.
  Descripció de text generada automàticament

En aquest programa, el punter de classe base emmagatzema objectes derivats de classe 1 (d1). La classe base del càsting dinàmic, el punter va conservar l'objecte Derived1 i el va assignar a la classe derivada 1, que proporcionava el càsting dinàmic vàlid.

Conclusió :

Aquest article ens va ensenyar el mètode de càsting de tipus utilitzat en el llenguatge de programació C++. El tipus de càsting també es va discutir en detall i ens vam centrar en la necessitat de per què utilitzem aquests mètodes a la programació C++. Hem parlat de la funció d'assistència que ajuda a la conversió del tipus de dades de la variable obtenint informació i verificant la conversió correcta anomenada RTTI. També hem implementat el concepte de càsting dinàmic utilitzant l'operador de càlcul dinàmic en una expressió en el llenguatge de programació C++ a l'entorn Ubuntu 20.04.