Dynamic_Cast C++

Dynamic Cast C



V tem članku bomo obravnavali dinamično pretvorbo v programskem jeziku C++. Za začetek moramo razumeti pojem litja in številne vrste litja. Postopek spreminjanja podatkovnega tipa spremenljivke je znan kot ulivanje. Ulivanje je v programskem jeziku C++ razdeljeno na dve kategoriji: implicitno ulivanje in eksplicitno ulivanje.

Pretvorba podatkovnega tipa v C++:

Prelivanje tipa je postopek spreminjanja podatkovnega tipa v drug podatkovni tip. V programskem jeziku C++ obstajata dve vrsti pretvorbe ali pretvorbe tipa: implicitno in eksplicitno pretvorbo. Samodejna pretvorba tipa je drugo ime za implicitno pretvorbo tipa. Izvaja ga prevajalnik med prevajanjem v realnem času in ne potrebuje nobenih uporabniških vnosov ali dejanj. Ko sta v izrazu dve vrsti podatkovnih tipov, pride do te oblike ulitja. Na primer:

  Grafični uporabniški vmesnik, besedilo, opis aplikacije samodejno ustvarjen







V podani kodi lahko vidimo, da sta celoštevilska spremenljivka in znakovna spremenljivka vstavljeni v zadnji vrstični izraz, vrednost celoštevilske spremenljivke 'i' pa je spremenjena. Ekvivalent številke ASCII 'a' bo pretvorjen v vrednost znaka in dodan celoštevilski vrednosti spremenljivke 'i' v tem stavku. Če je vrednost spremenljivke 'i' natisnjena, bo rezultat seštevek obeh teh vrednosti. Prevajalnik samodejno pretvori podatkovni tip znakovne spremenljivke v celoštevilski podatkovni tip tako, da ga pretvori v standardno vrednost ASCII abecede na desni, kar je odličen primer implicitne ali avtomatizirane pretvorbe tipa med izvajanjem.



Zdaj, ko gre za eksplicitno pretvorbo tipa ali pretvorbo tipa, to ni avtomatiziran postopek; uporabnik mora ročno pretvoriti podatkovni tip spremenljivke v drug tip spremenljivke v kodi. Vrste podatkov so običajno razvrščene v hierarhijo glede na njihov pomnilniški prostor in količino informacij, ki jih lahko hranijo. Torej, ko se podatkovni tip nižjega reda uporablja za shranjevanje kakršnih koli informacij, vendar ga je treba preoblikovati v podatkovni tip višjega reda, tako da se lahko zmanjša izguba informacij in se lahko shrani vedno več informacij, je običajno eksplicitno ulivanje tipa ali pretvorba tipa Končano. Na primer, ker spremenljivka celoštevilskega tipa ne more shranjevati vrednosti za decimalno vejico, lahko izgubimo nekaj informacij, če še naprej uporabljamo celoštevilske spremenljivke. Da bi se izognili tej izgubi, spremenljivko celega števila pretvorimo v spremenljivko s plavajočim, s čimer shranimo vrednosti za decimalnimi vejami in preprečimo izgubo informacij. Eksplicitno pretvorbo tipa v programskem jeziku C++ je mogoče doseči na enega od dveh načinov: z dodelitvijo ali z uporabo operatorja za pretvorbo. Pretvorba dodelitve se izvede v kodnem izrazu, sintaksa za ta izraz pa je navedena spodaj.



# “izraz (tip podatkov)”

V zgornji kodi moramo v oklepaj dati veljaven podatkovni tip, za oklepajem pa moramo zapisati spremenljivko ali izraz, ki ga želimo spremeniti v podatkovni tip, zapisan v oklepaju.





Zdaj bomo preučili vrsto pretvorbe, ki jo izvajajo operaterji za pretvorbo v programskem jeziku C++. Operatorji za pretvorbo se imenujejo tudi unarni operatorji, ki prisilijo spremenljivko, da spremeni svoj podatkovni tip iz enega obstoječega v drugega. Obstajajo štiri vrste operaterjev za pretvorbo: Statična pretvorba, Dinamična pretvorba, Konstantna pretvorba in Re-interpretacija pretvorbe.

Dinamično ulivanje v C++:

Dinamično ulivanje v programskem jeziku C++ temelji na konceptu, imenovanem RTTI (Identifikacija vrste izvajalnega časa). RTTI je funkcija, ki je prisotna v več programskih jezikih, kot so C/C++, Ada in Object Pascal. Identifikacija ali informacija o vrsti izvajalnega časa je funkcija, ki identificira in izvleče informacije o podrobnostih podatkovnega tipa objekta v času izvajanja programa. Ta funkcija zagotavlja varno pot za metode pretvorbe tipa, kot je funkcija »typeid« ali dinamično pretvorbo tipa. Zazna podatke o vrsti podatkov v času izvajanja in pomaga pri pretvorbi vrste podatkov, ko so v igri operaterji.



Dinamično prelivanje se večinoma uporablja v C++ za varno ulivanje med izvajanjem. Za delo z dinamično zasnovo mora imeti osnovni razred 1 navidezno funkcijo. Dynamic cast deluje samo s polimorfnimi osnovnimi razredi, ker te informacije uporablja za določanje varnega cast-a. Operater dinamičnega ulivanja izvaja dinamično ulivanje. Zdaj, ko poznamo koncepte, povezane z dinamičnim litjem, lahko preidemo na izvedbeni del. Najprej si poglejmo sintakso za uporabo dinamičnega ulivanja v programskem jeziku C++, ki je zapisana spodaj:

# “dynamic_cast (Expression)”

V zgornjem izrazu prvi del opisuje ime operaterja; v oglatih oklepajih zapišemo ime podatkovnega tipa, v katerega moramo pretvoriti naš izraz, v okrogle oklepaje pa zapišemo ime spremenljivke ali predmeta, ki ga želimo pretvoriti.

Zdaj, ko vemo, kako uporabljati dinamični cast operator in izpolniti parametre za pretvorbo podatkovnih tipov spremenljivk, ga lahko uporabimo za pretvorbo podatkovnih tipov spremenljivk.

Uporaba metode Dynamic cast v Ubuntu 20.04:

Za izvedbo tega koncepta moramo uporabiti več razredov za delo s pretvorbo objektov razreda po dedovanju. Torej, da najprej naredimo to, moramo najprej vedeti, da je programska datoteka C++ v okolju Ubuntu shranjena s pripono ».cpp«, tako da ustvarimo to datoteko na našem namizju, odprite terminal in vnesite »cd Desktop« na ukazno vrstico, nato pritisnite enter in vnesite »touch filename .cpp«, da ustvarite datoteko s pripono ».cpp«. Zdaj bomo v to datoteko zapisali kodo za ustvarjanje osnovnega razreda in 2 izpeljanih razredov, v kodi gonilnika pa bomo uporabili dinamični operator za pretvorbo.

  Grafični uporabniški vmesnik, samodejno ustvarjen besedilni opis

Po kliku gumba za shranjevanje zaprite datoteko. Vrnite se na terminal in zgradite datoteko z ukazom »g++« z vašim imenom datoteke in pripono ».cpp«. S tem ukazom bo ustvarjena datoteka s pripono ».out«. Zdaj lahko zaženete to datoteko tako, da vnesete »./« in svojo pripono ».out«.
  Samodejno ustvarjen besedilni opis

V tem programu kazalec osnovnega razreda shrani izpeljane objekte razreda 1 (d1). Osnovni razred dinamičnega ulitja, kazalec je obdržal objekt Derived1 in ga dodelil izpeljanemu razredu 1, ki je zagotovil veljavno dinamično ulivanje.

Zaključek :

Ta članek nas je naučil metode pretvorbe tipov, ki se uporablja v programskem jeziku C++. Podrobneje smo obravnavali tudi vrsto ulitkov in se osredotočili na potrebo, zakaj takšne metode uporabljamo pri programiranju C++. Razpravljali smo o funkciji pomoči, ki pomaga pri pretvorbi vrste podatkov spremenljivke s pridobivanjem informacij in preverjanjem pravilne pretvorbe, imenovane RTTI. Implementirali smo tudi koncept Dynamic casting z uporabo dinamičnega operaterja cast v izrazu v programskem jeziku C++ v okolju Ubuntu 20.04.