Dynamic_Cast C++

Dynamic Cast C



Den dynamiske rollebesetningen i programmeringsspråket C++ vil bli diskutert i denne artikkelen. Til å begynne med må vi forstå begrepet støping og mange typer støping. Prosessen med å endre en variabels datatype er kjent som casting. Casting er delt inn i to kategorier i programmeringsspråket C++: implisitt casting og eksplisitt casting.

Datatypekonvertering i C++:

Typecasting er prosedyren for å endre datatypen til en annen datatype. Det er to typer casting eller typekonvertering i programmeringsspråket C++: implisitt og eksplisitt casting. Automatisert typekonvertering er et annet navn for implisitt typecasting. Det utføres av kompilatoren under sanntidskompilering og trenger ingen brukerinndata eller handling. Når det er to typer datatyper i et uttrykk, oppstår denne formen for casting. For eksempel:

  Grafisk brukergrensesnitt, tekst, applikasjon Beskrivelse automatisk generert







I den gitte koden kan vi se at en heltallsvariabel og en tegnvariabel er satt inn i det siste linjeuttrykket, og verdien til heltallsvariabelen 'i' endres. ASCII-nummerekvivalenten til 'a' vil bli konvertert til en tegnverdi og lagt til heltallsverdien til variabelen 'i' i denne setningen. Hvis verdien av variabelen 'i' skrives ut, vil resultatet være en total av begge disse verdiene. Kompilatoren transformerer automatisk tegnvariabelens datatype til en heltallsdatatype ved å konvertere den til ASCII-standardverdien til alfabetet til høyre, som er et godt eksempel på implisitt eller automatisert typekonvertering på kjøretiden.



Nå, når det kommer til eksplisitt typeavstøpning eller typekonvertering, er det ikke en automatisert prosess; brukeren må manuelt konvertere en datatype av en variabel til en annen type variabel i koden. Datatypene er vanligvis ordnet i et hierarki basert på minneplassen og mengden informasjon de kan inneholde. Så når en lavere ordens datatype brukes til å lagre informasjon, men må omdannes til en høyere ordens datatype slik at tap av informasjon kan minimeres og mer og mer informasjon kan lagres, er det ofte eksplisitt typecasting eller typekonvertering. ferdig. For eksempel, fordi en heltallsvariabel ikke kan lagre verdier etter desimaltegnet, kan vi miste noe informasjon hvis vi fortsetter å bruke heltallsvariabler. For å unngå dette tapet konverterer vi heltallsvariabelen til en flytende variabel, lagrer verdier etter desimaltegn og forhindrer tap av informasjon. Den eksplisitte typekonverteringen i programmeringsspråket C++ kan oppnås på en av to måter: via tildeling eller ved å bruke rollebesetningsoperatøren. Oppgavekonverteringen gjøres i et kodeuttrykk, og syntaksen for dette uttrykket er gitt nedenfor.



# '(datatype) uttrykk'

I koden ovenfor må vi sette en gyldig datatype innenfor parentesen, og etter parentesen må vi skrive variabelen eller uttrykket som vi ønsker å modifisere inn i datatypen skrevet i parentesen.





Nå skal vi se på hvilken type konvertering gjort av rollebesetningsoperatørene i programmeringsspråket C++. Cast-operatorer kalles også unære operatorer som tvinger en variabel til å endre sin datatype fra en eksisterende til en annen. Det er fire typer casting-operatorer: Statisk cast, Dynamic cast, Const cast og Re-interpret cast.

Dynamisk casting i C++:

Dynamisk casting i programmeringsspråket C++ er basert på et konsept kalt RTTI (Run Time Type Identification). RTTI er en funksjon som finnes i flere programmeringsspråk som C/C++, Ada og Object Pascal. Run-Time Type Identification eller Information er en funksjon som identifiserer og trekker ut informasjonen om detaljene til et objekts datatype på kjøretiden til et program. Denne funksjonen gir en sikker vei for typestøpemetoder som 'typeid'-funksjonen eller dynamisk typestøping. Den oppdager datatypeinformasjonen om kjøretiden og hjelper konverteringen av datatype når operatørene er i spill.



Dynamisk støping brukes for det meste i C++ for sikker nedkasting under kjøretid. For å jobbe med den dynamiske casten, må basisklassen ha 1 virtuell funksjon. Dynamisk støp fungerer bare med polymorfe basisklasser fordi den bruker denne informasjonen til å bestemme sikker nedstøping. En dynamisk cast-operatør utfører dynamisk casting. Nå som vi vet om konseptene knyttet til dynamisk støping, kan vi gå mot implementeringsdelen. La oss først se på syntaksen for bruk av dynamisk casting i programmeringsspråket C++, som er skrevet nedenfor:

# 'dynamic_cast (Uttrykk)'

I uttrykket ovenfor beskriver den første delen navnet på operatøren; i vinkelparentesene skriver vi navnet på datatypen vi trenger for å konvertere uttrykket vårt til, og i de runde parentesene skriver vi variabelen eller objektets navn som vi vil konvertere.

Nå som vi vet hvordan vi bruker den dynamiske cast-operatoren og fyller ut parameterne for å konvertere datatyper av variabler, kan vi bruke den til å konvertere datatyper av variabler.

Bruke dynamisk cast-metode i Ubuntu 20.04:

For å implementere dette konseptet må vi bruke flere klasser å jobbe med for å konvertere objekter i klassen etter arv. Så for å gjøre det først, må vi først vite at C++-programfilen i Ubuntu-miljøet er lagret med filtypen «.cpp», så for å lage denne filen på skrivebordet vårt, åpne en terminal og skriv «cd Desktop» på kommandolinje, trykk deretter på enter og skriv 'touch filename .cpp' for å lage en fil med filtypen '.cpp'. Nå skal vi skrive en kode i den filen for å lage en basisklasse og 2 avledede klasser, og i driverkoden vil vi bruke den dynamiske cast-operatoren.

  Grafisk brukergrensesnitt, tekst Beskrivelse automatisk generert

Avslutt filen etter å ha klikket på lagre-knappen. Gå tilbake til terminalen og bygg filen ved å bruke kommandoen 'g++' med filnavnet og filtypen '.cpp'. En fil med filtypen '.out' vil bli opprettet ved hjelp av denne kommandoen. Du kan nå kjøre filen ved å skrive inn './' etterfulgt av filtypen '.out'.
  Tekstbeskrivelse genereres automatisk

I dette programmet lagrer basisklassepekeren avledede klasse 1-objekter (d1). Den dynamiske casting-basisklassen, pekeren beholdt Derived1-objektet og allokerte det til avledet klasse 1, som ga gyldig dynamisk casting.

Konklusjon :

Denne artikkelen lærte oss type casting-metoden som brukes i programmeringsspråket C++. Type casting ble også diskutert i detalj, og vi fokuserte på behovet for hvorfor vi bruker slike metoder i C++-programmering. Vi diskuterte hjelpefunksjonen som hjelper konverteringen av variabelens datatype ved å hente informasjon og verifisere for riktig konvertering kalt RTTI. Vi implementerte også konseptet Dynamic casting ved å bruke den dynamiske cast-operatoren i et uttrykk i programmeringsspråket C++ i Ubuntu 20.04-miljøet.