Dynamic_Cast C++

Dynamic Cast C



Den dynamiska casten i programmeringsspråket C++ kommer att diskuteras i den här artikeln. Till att börja med måste vi förstå begreppet gjutning och många typer av gjutning. Processen att ändra en variabels datatyp kallas casting. Casting delas in i två kategorier i programmeringsspråket C++: implicit casting och explicit casting.

Datatypkonvertering i C++:

Typgjutning är proceduren för att ändra datatypen till någon annan datatyp. Det finns två typer av casting eller typkonvertering i programmeringsspråket C++: implicit och explicit casting. Automatiserad typkonvertering är ett annat namn för implicit typcasting. Det utförs av kompilatorn under realtidskompilering och behöver ingen användarinmatning eller åtgärd. När det finns två sorters datatyper i ett uttryck inträffar denna form av casting. Till exempel:

  Grafiskt användargränssnitt, text, applikation Beskrivning genereras automatiskt







I den givna koden kan vi se att en heltalsvariabel och en teckenvariabel infogas i det sista radens uttrycket, och värdet på heltalsvariabeln 'i' ändras. ASCII-talets motsvarighet till 'a' kommer att konverteras till ett teckenvärde och läggs till heltalsvärdet för variabeln 'i' i denna sats. Om värdet för variabeln 'i' skrivs ut, blir resultatet totalt båda dessa värden. Kompilatorn omvandlar automatiskt teckenvariabelns datatyp till en heltalsdatatyp genom att konvertera den till ASCII-standardvärdet för alfabetet till höger, vilket är ett bra exempel på implicit eller automatiserad typkonvertering under körtiden.



Nu, när det kommer till explicit typgjutning eller typkonvertering, är det inte en automatiserad process; användaren måste manuellt konvertera en datatyp av en variabel till en annan typ av variabel i koden. Datatyperna är vanligtvis ordnade i en hierarki baserat på deras minnesutrymme och mängden information de kan hålla. Så när en lägre ordningsdatatyp används för att lagra all information men måste omvandlas till en högre ordningsdatatyp så att informationsförlusten kan minimeras och mer och mer information kan lagras, är explicit typgjutning eller typkonvertering vanligen Gjort. Till exempel, eftersom en heltalsvariabel inte kan lagra värden efter decimalkomma, kan vi förlora viss information om vi fortsätter att använda heltalsvariabler. För att undvika denna förlust konverterar vi heltalsvariabeln till en flytande variabel, sparar värden efter decimaler och förhindrar informationsförlust. Den explicita typkonverteringen i programmeringsspråket C++ kan åstadkommas på ett av två sätt: via tilldelning eller genom att använda cast-operatören. Tilldelningskonverteringen görs i ett koduttryck, och syntaxen för detta uttryck ges nedan.



# '(datatyp) uttryck'

I ovanstående kod måste vi sätta en giltig datatyp inom parentesen, och efter parentesen måste vi skriva variabeln eller uttrycket som vi vill modifiera till datatypen som skrivits inuti parentesen.





Nu kommer vi att undersöka vilken typ av konvertering som görs av cast-operatörerna i programmeringsspråket C++. Cast-operatorer kallas också unära operatorer som tvingar en variabel att ändra sin datatyp från en befintlig till en annan. Det finns fyra typer av gjutningsoperatorer: Statisk gjutning, Dynamisk gjutning, Konstgjutning och Re-tolk cast.

Dynamisk gjutning i C++:

Dynamisk casting i programmeringsspråket C++ bygger på ett koncept som kallas RTTI (Run Time Type Identification). RTTI är en funktion som finns i flera programmeringsspråk som C/C++, Ada och Object Pascal. Run-Time Type Identification eller Information är en funktion som identifierar och extraherar informationen om detaljerna i ett objekts datatyp om körtiden för ett program. Denna funktion ger en säker väg för typgjutningsmetoder som 'typeid'-funktionen eller dynamisk typgjutning. Den upptäcker datatypsinformation om körtiden och hjälper till att konvertera datatyp när operatörerna är igång.



Dynamisk gjutning används mest i C++ för säker nedgjutning under körning. För att arbeta med den dynamiska casten måste basklassen ha 1 virtuell funktion. Dynamisk gjutning fungerar bara med polymorfa basklasser eftersom den använder denna information för att fastställa säker gjutning. En dynamisk gjutning operatör gör dynamisk gjutning. Nu när vi vet om koncepten relaterade till dynamisk gjutning kan vi gå mot implementeringsdelen. Låt oss först titta på syntaxen för att använda dynamisk casting i programmeringsspråket C++, som är skrivet nedan:

# “dynamic_cast (Uttryck)”

I uttrycket ovan beskriver den första delen namnet på operatorn; inom vinkelparenteserna skriver vi namnet på datatypen som vi behöver konvertera vårt uttryck till, och inom de runda parenteserna skriver vi variabeln eller objektets namn som vi vill konvertera.

Nu när vi vet hur man använder den dynamiska cast-operatorn och fyller i parametrarna för att konvertera datatyper av variabler, kan vi använda den för att konvertera datatyper av variabler.

Använda Dynamic cast-metoden i Ubuntu 20.04:

För att implementera detta koncept måste vi använda flera klasser att arbeta med för att konvertera objekt i klassen genom arv. Så för att göra det först måste vi först veta att C++-programfilen i Ubuntu-miljön lagras med filtillägget '.cpp', så för att skapa den här filen på vårt skrivbord, öppna en terminal och skriv 'cd Desktop' på kommandoraden, tryck sedan på enter och skriv 'touch filename .cpp' för att skapa en fil med filtillägget '.cpp'. Nu kommer vi att skriva en kod i den filen för att skapa en basklass och 2 härledda klasser, och i drivrutinskoden kommer vi att använda den dynamiska cast-operatorn.

  Grafiskt användargränssnitt, text Beskrivning genereras automatiskt

Avsluta filen efter att ha klickat på knappen Spara. Gå tillbaka till terminalen och bygg filen med kommandot 'g++' med ditt filnamn och tillägget '.cpp'. En fil med filtillägget '.out' kommer att skapas med detta kommando. Du kan nu köra den filen genom att ange './' följt av tillägget '.out'.
  Textbeskrivning genereras automatiskt

I detta program lagrar basklasspekaren härledda klass 1-objekt (d1). Den dynamiska casting-basklassen, pekaren behöll Derived1-objektet och allokerade det till härledd klass 1, vilket gav giltig dynamisk casting.

Slutsats :

Den här artikeln lärde oss typgjutningsmetoden som används i programmeringsspråket C++. Typen av casting diskuterades också i detalj, och vi fokuserade på behovet av varför vi använder sådana metoder i C++-programmering. Vi diskuterade assistansfunktionen som hjälper till att konvertera variabelns datatyp genom att hämta information och verifiera korrekt konvertering som kallas RTTI. Vi implementerade också konceptet Dynamic casting genom att använda den dynamiska cast-operatorn i ett uttryck i programmeringsspråket C++ i Ubuntu 20.04-miljön.