Dynamic_Cast C++

Dynamic Cast C



O dynamickom obsadení v programovacom jazyku C++ sa bude diskutovať v tomto článku. Na začiatok musíme pochopiť pojem odlievanie a mnoho druhov odlievania. Proces zmeny typu údajov premennej je známy ako casting. Casting je v programovacom jazyku C++ rozdelený do dvoch kategórií: implicitné casting a explicitné casting.

Konverzia dátových typov v C++:

Pretypovanie je postup zmeny typu údajov na iný typ údajov. V programovacom jazyku C++ existujú dva typy pretypovania alebo konverzie typov: implicitné a explicitné pretypovanie. Automatizovaná konverzia typov je iný názov pre implicitné typové obsadenie. Vykonáva ho kompilátor počas kompilácie v reálnom čase a nevyžaduje žiadny vstup alebo akciu používateľa. Keď sú vo výraze dva druhy dátových typov, dôjde k tejto forme pretypovania. Napríklad:

  Grafické užívateľské rozhranie, text, popis aplikácie automaticky generovaný







V danom kóde vidíme, že do posledného riadkového výrazu sa vloží celočíselná premenná a znaková premenná a zmení sa hodnota celočíselnej premennej „i“. Ekvivalent čísla ASCII „a“ sa prevedie na znakovú hodnotu a pripočíta sa k celočíselnej hodnote premennej „i“ v tomto príkaze. Ak sa vytlačí hodnota premennej „i“, výsledkom bude súčet oboch týchto hodnôt. Kompilátor automaticky transformuje typ údajov znakovej premennej na celočíselný údajový typ tak, že ho skonvertuje na štandardnú hodnotu ASCII abecedy vpravo, čo je skvelý príklad implicitnej alebo automatickej konverzie typu za behu.



Teraz, pokiaľ ide o explicitné pretypovanie alebo konverziu typu, nejde o automatizovaný proces; užívateľ musí manuálne previesť dátový typ premennej na iný typ premennej v kóde. Dátové typy sú zvyčajne usporiadané v hierarchii na základe ich pamäťového priestoru a množstva informácií, ktoré môžu uchovávať. Takže, keď sa na ukladanie akýchkoľvek informácií používa dátový typ nižšieho rádu, ale musí sa transformovať na dátový typ vyššieho rádu, aby sa minimalizovala strata informácií a aby sa dalo uložiť stále viac informácií, je bežné pretypovanie explicitného typu alebo konverzia typu. hotový. Napríklad, pretože premenná typu celé číslo nemôže ukladať hodnoty za desatinnou čiarkou, môžeme stratiť niektoré informácie, ak budeme pokračovať v používaní celočíselných premenných. Aby sme predišli tejto strate, konvertujeme celočíselné premenné na pohyblivú premennú, čím ukladáme hodnoty za desatinnými čiarkami a predchádzame strate informácií. Konverziu explicitného typu v programovacom jazyku C++ je možné vykonať jedným z dvoch spôsobov: priradením alebo použitím operátora cast. Konverzia priradenia sa vykonáva v kódovom výraze a syntax tohto výrazu je uvedená nižšie.



# “(údajový typ) výraz”

Vo vyššie uvedenom kóde musíme vložiť platný dátový typ do zátvorky a za zátvorku musíme napísať premennú alebo výraz, ktorý chceme upraviť, do dátového typu napísaného v zátvorke.





Teraz sa pozrieme na typ konverzie, ktorú vykonávajú operátori castingu v programovacom jazyku C++. Operátory Cast sa tiež nazývajú unárne operátory, ktoré nútia premennú zmeniť typ údajov z jedného existujúceho na druhý. Existujú štyri typy operátorov castingu: Static cast, Dynamic cast, Const cast a Re-interpret cast.

Dynamické casting v C++:

Dynamické casting v programovacom jazyku C++ je založený na koncepte nazývanom RTTI (Run Time Type Identification). RTTI je funkcia prítomná v niekoľkých programovacích jazykoch ako C/C++, Ada a Object Pascal. Identifikácia alebo informácie typu spustenia je funkcia, ktorá identifikuje a extrahuje informácie týkajúce sa podrobností o type údajov objektu v čase spustenia programu. Táto funkcia poskytuje bezpečnú cestu pre metódy pretypovania, ako je funkcia „typeid“ alebo dynamické pretypovanie. Zisťuje informácie o type údajov o dobe chodu a pomáha pri konverzii typu údajov, keď sú operátori v hre.



Dynamické odlievanie sa väčšinou používa v C++ na bezpečné odlievanie. Ak chcete pracovať s dynamickým pretypovaním, základná trieda musí mať 1 virtuálnu funkciu. Dynamické vrhanie funguje len s polymorfnými základnými triedami, pretože využíva tieto informácie na určenie bezpečného vrhania. Operátor dynamického obsadenia vykonáva dynamické liatie. Teraz, keď vieme o konceptoch súvisiacich s dynamickým odlievaním, môžeme prejsť k implementačnej časti. Najprv sa pozrime na syntax pre použitie dynamického pretypovania v programovacom jazyku C++, ktorý je napísaný nižšie:

# “dynamic_cast (Výraz)”

Vo vyššie uvedenom výraze prvá časť popisuje meno operátora; do lomených zátvoriek napíšeme názov dátového typu, na ktorý potrebujeme previesť náš výraz, a do okrúhlych zátvoriek napíšeme názov premennej alebo objektu, ktorý chceme previesť.

Teraz, keď vieme, ako používať operátor dynamického pretypovania a vyplniť parametre na konverziu dátových typov premenných, môžeme ho použiť na konverziu dátových typov premenných.

Použitie metódy dynamického obsadenia v Ubuntu 20.04:

Na implementáciu tohto konceptu musíme použiť niekoľko tried, s ktorými môžeme pracovať na konverziu objektov triedy dedením. Aby sme to urobili, najprv musíme vedieť, že programový súbor C++ v prostredí Ubuntu je uložený s príponou „.cpp“, takže ak chcete tento súbor vytvoriť na našej pracovnej ploche, otvorte terminál a napíšte „cd Desktop“ na príkazového riadku, potom stlačte enter a napíšte „touch filename .cpp“ na vytvorenie súboru s príponou „.cpp“. Teraz do tohto súboru napíšeme kód na vytvorenie základnej triedy a 2 odvodených tried a v kóde ovládača použijeme operátor dynamického pretypovania.

  Grafické používateľské rozhranie, text Popis sa generuje automaticky

Po kliknutí na tlačidlo Uložiť súbor ukončite. Vráťte sa do terminálu a vytvorte súbor pomocou príkazu „g++“ s názvom súboru a príponou „.cpp“. Pomocou tohto príkazu sa vytvorí súbor s príponou „.out“. Teraz môžete tento súbor spustiť zadaním „./“ nasledovaného príponou „.out“.
  Text Popis sa vygeneruje automaticky

V tomto programe ukazovateľ základnej triedy ukladá odvodené objekty triedy 1 (d1). Základná trieda dynamického pretypovania, ukazovateľ zachoval objekt Derived1 a pridelil ho odvodenej triede 1, ktorá poskytla platné dynamické pretypovanie.

Záver :

Tento článok nás naučil metódu pretypovania používanú v programovacom jazyku C++. Podrobne sa rozoberal aj typ odlievania a zamerali sme sa na potrebu, prečo takéto metódy používame pri programovaní v C++. Diskutovali sme o asistenčnej funkcii, ktorá pomáha pri konverzii typu údajov premennej načítaním informácií a overením správnej konverzie nazývanej RTTI. Taktiež sme implementovali koncept dynamického pretypovania pomocou operátora dynamického pretypovania vo výraze v programovacom jazyku C++ v prostredí Ubuntu 20.04.