Dynamic_Cast C++

Dynamic Cast C



U ovom članku raspravljat ćemo o dinamičkom pretvaranju u programskom jeziku C++. Za početak, moramo razumjeti pojam lijevanja i mnoge vrste lijevanja. Proces mijenjanja tipa podataka varijable poznat je kao kasting. Casting je podijeljen u dvije kategorije u programskom jeziku C++: implicitni casting i eksplicitni casting.

Pretvorba tipa podataka u C++:

Prilagođavanje tipa je postupak mijenjanja tipa podataka u neki drugi tip podataka. U programskom jeziku C++ postoje dvije vrste pretvaranja ili pretvorbe tipa: implicitno i eksplicitno pretvaranje. Automatizirana konverzija tipa je drugi naziv za implicitno pretvaranje tipa. Izvodi ga kompajler tijekom kompilacije u stvarnom vremenu i ne zahtijeva nikakav korisnički unos ili radnju. Kada u izrazu postoje dvije vrste tipova podataka, javlja se ovaj oblik kastinga. Na primjer:

  Grafičko korisničko sučelje, tekst, opis aplikacije automatski generiran







U zadanom kodu možemo vidjeti da su cjelobrojna varijabla i znakovna varijabla umetnute u posljednji redak izraza, a vrijednost cjelobrojne varijable “i” je promijenjena. Ekvivalent ASCII broja 'a' pretvorit će se u vrijednost znaka i dodati cjelobrojnoj vrijednosti varijable 'i' u ovoj izjavi. Ako se ispiše vrijednost varijable “i”, rezultat će biti zbroj obje ove vrijednosti. Kompajler automatski transformira tip podataka znakovne varijable u cjelobrojni tip podataka pretvarajući ga u ASCII standardnu ​​vrijednost abecede s desne strane, što je izvrstan primjer implicitne ili automatizirane konverzije tipa tijekom izvođenja.



Sada, kada se radi o eksplicitnom pretvaranju tipa ili pretvorbi tipa, to nije automatizirani proces; korisnik mora ručno pretvoriti tip podataka varijable u drugi tip varijable u kodu. Tipovi podataka obično su raspoređeni u hijerarhiju na temelju njihovog memorijskog prostora i količine informacija koje mogu sadržavati. Dakle, kada se tip podataka nižeg reda koristi za pohranjivanje bilo koje informacije, ali se mora transformirati u tip podataka višeg reda tako da se gubitak informacija može svesti na najmanju moguću mjeru i da se može pohraniti sve više i više informacija, uobičajeno je eksplicitno pretvaranje tipa ili pretvorba tipa učinjeno. Na primjer, budući da varijabla cjelobrojnog tipa ne može pohraniti vrijednosti nakon decimalne točke, možemo izgubiti neke informacije ako nastavimo koristiti varijable cijelog broja. Kako bismo izbjegli ovaj gubitak, pretvaramo varijablu cijelog broja u varijablu s pomičnim zarezom, spremajući vrijednosti nakon decimalnih točaka i sprječavajući gubitak informacija. Eksplicitna pretvorba tipa u programskom jeziku C++ može se postići na jedan od dva načina: putem dodjele ili korištenjem cast operatora. Pretvorba dodjele se vrši u kodnom izrazu, a sintaksa za ovaj izraz navedena je u nastavku.



# “izraz (tip podataka)”

U gornjem kodu moramo staviti važeći tip podataka unutar zagrade, a nakon zagrade moramo napisati varijablu ili izraz koji želimo modificirati u tip podataka napisan unutar zagrade.





Sada ćemo pogledati vrstu konverzije koju izvode cast operatori u C++ programskom jeziku. Cast operatori se također nazivaju unarni operatori koji prisiljavaju varijablu da promijeni svoj tip podataka iz jednog postojećeg u drugi. Postoje četiri vrste cast operatora cast: Static cast, Dynamic cast, Const cast i Re-interpret cast.

Dinamičko kasting u C++:

Dinamičko kasting u programskom jeziku C++ temelji se na konceptu zvanom RTTI (Identifikacija tipa izvođenja). RTTI je funkcija prisutna u nekoliko programskih jezika kao što su C/C++, Ada i Object Pascal. Identifikacija ili informacija o vrsti vremena izvođenja funkcija je koja identificira i izdvaja informacije u vezi s pojedinostima tipa podataka objekta u vremenu izvođenja programa. Ova funkcija pruža siguran put za metode pretvaranja tipa kao što je funkcija 'typeid' ili dinamičko pretvaranje tipa. Otkriva podatke o vrsti podataka tijekom vremena izvođenja i pomaže u pretvorbi vrste podataka kada su operatori u igri.



Dinamičko kasting se uglavnom koristi u C++ za sigurno kasting za vrijeme izvođenja. Za rad s dinamičkim pretvaranjem, osnovna klasa mora imati 1 virtualnu funkciju. Dinamičko pretvaranje radi samo s polimorfnim osnovnim klasama jer koristi ove informacije za određivanje sigurnog bacanja. Operator dinamičkog cast-a radi dinamičko cast. Sada kada znamo o konceptima koji se odnose na dinamičko lijevanje, možemo prijeći na implementacijski dio. Pogledajmo najprije sintaksu za korištenje dinamičkog pretvaranja u programskom jeziku C++, koja je napisana u nastavku:

# “dinamički_cast (izraz)”

U gornjem izrazu, prvi dio opisuje naziv operatora; u uglaste zagrade upišemo naziv tipa podataka u koji trebamo pretvoriti naš izraz, a u okrugle zagrade upišemo naziv varijable ili objekta koji želimo pretvoriti.

Sada kada znamo kako koristiti dinamički cast operator i ispuniti parametre za pretvorbu tipova podataka varijabli, možemo ga koristiti za pretvaranje tipova podataka varijabli.

Korištenje metode Dynamic Cast u Ubuntu 20.04:

Da bismo implementirali ovaj koncept, moramo koristiti nekoliko klasa za rad za pretvaranje objekata klase prema nasljeđivanju. Dakle, da bismo to učinili prvo, prvo moramo znati da je C++ programska datoteka u Ubuntu okruženju pohranjena s ekstenzijom “.cpp,” tako da kreiramo ovu datoteku na radnoj površini, otvorimo terminal i upišemo “cd Desktop” na naredbeni redak, zatim pritisnite enter i upišite 'touch filename .cpp' da biste stvorili datoteku s nastavkom '.cpp'. Sada ćemo napisati kod u toj datoteci za stvaranje osnovne klase i 2 izvedene klase, au upravljačkom kodu koristit ćemo dinamički cast operator.

  Grafičko korisničko sučelje, tekstualni opis automatski generiran

Izađite iz datoteke nakon što kliknete gumb za spremanje. Vratite se na terminal i izradite datoteku pomoću naredbe “g++” s vašim nazivom datoteke i ekstenzijom “.cpp”. Pomoću ove naredbe stvorit će se datoteka s ekstenzijom '.out'. Sada možete pokrenuti tu datoteku tako da unesete './' nakon čega slijedi ekstenziju '.out'.
  Tekst Opis automatski generiran

U ovom programu, pokazivač osnovne klase pohranjuje izvedene objekte klase 1 (d1). Osnovna klasa dinamičkog lijevanja, pokazivač je zadržao objekt Derived1 i dodijelio ga izvedenoj klasi 1, koja je omogućila valjano dinamičko ljepljenje.

Zaključak :

Ovaj nas je članak naučio metodi pretvaranja tipa koja se koristi u programskom jeziku C++. Također smo detaljno raspravljali o tipu castinga, a fokusirali smo se na potrebu zašto koristimo takve metode u C++ programiranju. Raspravljali smo o pomoćnoj funkciji koja pomaže konverziji vrste podataka varijable dohvaćanjem informacija i provjerom ispravne konverzije koja se naziva RTTI. Također smo implementirali koncept dinamičkog pretvaranja korištenjem operatora dinamičkog pretvaranja u izrazu u programskom jeziku C++ u okruženju Ubuntu 20.04.