Dynamic_Cast C++

Dynamic Cast C



Den dynamiske rollebesætning i programmeringssproget C++ vil blive diskuteret i denne artikel. Til at begynde med skal vi forstå begrebet støbning og mange typer støbning. Processen med at ændre en variabels datatype er kendt som casting. Casting er opdelt i to kategorier i C++ programmeringssproget: implicit casting og eksplicit casting.

Datatypekonvertering i C++:

Typestøbning er proceduren for at ændre datatypen til en anden datatype. Der er to typer casting eller typekonvertering i C++ programmeringssproget: implicit og eksplicit casting. Automatiseret typekonvertering er et andet navn for implicit typecasting. Det udføres af compileren under realtidskompilering og kræver ingen brugerinput eller handling. Når der er to slags datatyper i et udtryk, opstår denne form for casting. For eksempel:

  Grafisk brugergrænseflade, tekst, applikation Beskrivelse genereret automatisk







I den givne kode kan vi se, at en heltalsvariabel og en karaktervariabel er indsat i det sidste linjeudtryk, og værdien af ​​heltalsvariablen 'i' ændres. ASCII-talsækvivalenten til 'a' vil blive konverteret til en tegnværdi og tilføjet til heltalsværdien af ​​variablen 'i' i denne sætning. Hvis værdien af ​​variablen 'i' udskrives, vil resultatet være en total af begge disse værdier. Compileren transformerer automatisk tegnvariablens datatype til en heltalsdatatype ved at konvertere den til ASCII-standardværdien af ​​alfabetet til højre, hvilket er et godt eksempel på implicit eller automatiseret typekonvertering på køretiden.



Når det nu kommer til eksplicit typestøbning eller typekonvertering, er det ikke en automatiseret proces; brugeren skal manuelt konvertere en datatype af en variabel til en anden type variabel i koden. Datatyperne er normalt arrangeret i et hierarki baseret på deres hukommelsesplads og mængden af ​​information, de kan indeholde. Så når en lavere ordens datatype bruges til at gemme enhver information, men skal omdannes til en højere ordens datatype, så informationstab kan minimeres og mere og mere information kan lagres, er eksplicit type casting eller typekonvertering almindeligvis Færdig. For eksempel, fordi en heltalsvariabel ikke kan gemme værdier efter decimalkommaet, kan vi miste nogle oplysninger, hvis vi fortsætter med at bruge heltalsvariable. For at undgå dette tab konverterer vi heltalsvariablen til en flydende variabel, gemmer værdier efter decimaler og forhindrer tab af information. Den eksplicitte typekonvertering i C++ programmeringssproget kan opnås på en af ​​to måder: via tildeling eller ved at bruge cast-operatøren. Tildelingskonverteringen udføres i et kodeudtryk, og syntaksen for dette udtryk er angivet nedenfor.



# '(datatype) udtryk'

I ovenstående kode skal vi sætte en gyldig datatype inden for parentesen, og efter parentesen skal vi skrive den variabel eller det udtryk, som vi ønsker at modificere i den datatype, der er skrevet inde i parentesen.





Nu vil vi se nærmere på typen af ​​konvertering udført af cast-operatørerne i programmeringssproget C++. Cast-operatorer kaldes også unære operatorer, der tvinger en variabel til at ændre dens datatype fra en eksisterende til en anden. Der er fire typer af casting cast operatorer: Statisk cast, Dynamisk cast, Const cast og Re-interpret cast.

Dynamisk casting i C++:

Dynamisk casting i C++ programmeringssproget er baseret på et koncept kaldet RTTI (Run Time Type Identification). RTTI er en funktion, der findes i flere programmeringssprog som C/C++, Ada og Object Pascal. Run-Time Type Identification eller Information er en funktion, der identificerer og udtrækker oplysningerne vedrørende detaljerne i et objekts datatype på et programs køretid. Denne funktion giver en sikker vej til typestøbningsmetoder som 'typeid'-funktionen eller dynamisk typestøbning. Den registrerer datatypeoplysningerne om kørselstiden og hjælper med konverteringen af ​​datatypen, når operatørerne er i spil.



Dynamisk støbning bruges for det meste i C++ til sikker nedstøbning under drift. For at arbejde med den dynamiske cast skal basisklassen have 1 virtuel funktion. Dynamisk støbning fungerer kun med polymorfe basisklasser, fordi den bruger denne information til at bestemme sikker nedstøbning. En dynamisk cast-operatør udfører dynamisk casting. Nu hvor vi kender til koncepterne relateret til dynamisk støbning, kan vi gå mod implementeringsdelen. Lad os først se på syntaksen for brug af dynamisk casting i programmeringssproget C++, som er skrevet nedenfor:

# 'dynamic_cast (udtryk)'

I ovenstående udtryk beskriver den første del navnet på operatøren; i vinkelparenteserne skriver vi navnet på den datatype, som vi skal konvertere vores udtryk til, og i de runde parenteser skriver vi variablen eller objektets navn, som vi vil konvertere.

Nu hvor vi ved, hvordan man bruger den dynamiske cast-operator og udfylder parametrene til konvertering af datatyper af variabler, kan vi bruge den til at konvertere datatyper af variabler.

Brug af dynamisk cast-metode i Ubuntu 20.04:

For at implementere dette koncept skal vi bruge flere klasser til at arbejde med for at konvertere objekter i klassen ved arv. Så for at gøre det først, skal vi først vide, at C++-programfilen i Ubuntu-miljøet er gemt med filtypenavnet '.cpp', så for at oprette denne fil på vores skrivebord skal du åbne en terminal og skrive 'cd Desktop' på kommandolinje, tryk derefter på enter og skriv 'touch filnavn .cpp' for at oprette en fil med filtypenavnet '.cpp'. Nu vil vi skrive en kode i den fil for at oprette en basisklasse og 2 afledte klasser, og i driverkoden vil vi bruge den dynamiske cast-operator.

  Grafisk brugergrænseflade, tekst Beskrivelse genereret automatisk

Afslut filen efter at have klikket på knappen Gem. Vend tilbage til terminalen og opbyg filen ved at bruge kommandoen 'g++' med dit filnavn og filtypenavnet '.cpp'. En fil med filtypenavnet '.out' vil blive oprettet ved hjælp af denne kommando. Du kan nu køre denne fil ved at indtaste './' efterfulgt af din '.out' filtypenavn.
  Tekstbeskrivelse genereres automatisk

I dette program gemmer basisklassemarkøren afledte klasse 1-objekter (d1). Den dynamiske casting-basisklasse, markøren beholdt Derived1-objektet og allokerede det til afledt klasse 1, hvilket gav gyldig dynamisk casting.

Konklusion :

Denne artikel lærte os den type casting metode, der bruges i C++ programmeringssproget. Typen af ​​casting blev også diskuteret i detaljer, og vi fokuserede på behovet for, hvorfor vi bruger sådanne metoder i C++ programmering. Vi diskuterede hjælpefunktionen, der hjælper konverteringen af ​​variabelens datatype ved at hente information og verificere for korrekt konvertering kaldet RTTI. Vi implementerede også konceptet Dynamic casting ved at bruge den dynamiske cast-operator i et udtryk i C++ programmeringssproget i Ubuntu 20.04-miljøet.