Dynamic_Cast C++

Dynamic Cast C



Dynamické obsazení v programovacím jazyce C++ bude probráno v tomto článku. Pro začátek musíme porozumět pojmu odlévání a mnoha typům odlévání. Proces změny datového typu proměnné se nazývá casting. Casting je v programovacím jazyce C++ rozdělen do dvou kategorií: implicitní casting a explicitní casting.

Konverze datových typů v C++:

Přetypování typu je procedura změny datového typu na jiný datový typ. V programovacím jazyce C++ existují dva typy přetypování nebo převodu typů: implicitní a explicitní přetypování. Automatizovaná konverze typů je jiný název pro implicitní typové obsazení. Provádí ji kompilátor během kompilace v reálném čase a nevyžaduje žádný uživatelský vstup nebo akci. Pokud jsou ve výrazu dva druhy datových typů, dojde k této formě přetypování. Například:

  Grafické uživatelské rozhraní, text, popis aplikace generován automaticky







V daném kódu vidíme, že do posledního řádkového výrazu se vloží celočíselná proměnná a znaková proměnná a změní se hodnota celočíselné proměnné „i“. Ekvivalent čísla ASCII „a“ bude převeden na hodnotu znaku a přičten k celočíselné hodnotě proměnné „i“ v tomto příkazu. Pokud je vytištěna hodnota proměnné „i“, výsledkem bude součet obou těchto hodnot. Kompilátor automaticky transformuje datový typ znakové proměnné na celočíselný datový typ tak, že jej převede na standardní hodnotu ASCII abecedy napravo, což je skvělý příklad implicitní nebo automatické konverze typu za běhu.



Nyní, pokud jde o explicitní přetypování nebo konverzi typu, nejde o automatizovaný proces; uživatel musí ručně převést datový typ proměnné na jiný typ proměnné v kódu. Datové typy jsou obvykle uspořádány v hierarchii na základě jejich paměťového prostoru a množství informací, které mohou pojmout. Když se tedy k uložení jakýchkoli informací používá datový typ nižšího řádu, ale musí být transformován na datový typ vyššího řádu, aby bylo možné minimalizovat ztrátu informací a bylo možné uložit stále více informací, je běžné přetypování explicitního typu nebo konverze typu. Hotovo. Protože například proměnná typu integer nemůže ukládat hodnoty za desetinnou čárkou, můžeme ztratit některé informace, pokud budeme nadále používat celočíselné proměnné. Abychom se vyhnuli této ztrátě, převedeme celočíselnou proměnnou na proměnnou s plovoucí čárkou, uložíme hodnoty za desetinnou tečkou a zabráníme ztrátě informací. Explicitní převod typu v programovacím jazyce C++ lze provést jedním ze dvou způsobů: přiřazením nebo použitím operátoru cast. Převod přiřazení se provádí v kódovém výrazu a syntaxe tohoto výrazu je uvedena níže.



# “(datový typ) výraz”

Ve výše uvedeném kódu musíme do závorky vložit platný datový typ a za závorku musíme zapsat proměnnou nebo výraz, který chceme upravit, do datového typu zapsaného v závorce.





Nyní se podíváme na typ konverze prováděné operátory castingu v programovacím jazyce C++. Operátory castování se také nazývají unární operátory, které nutí proměnnou změnit svůj datový typ z jednoho existujícího na jiný. Existují čtyři typy operátorů castingu: Statické cast, Dynamické cast, Const cast a Re-interpret cast.

Dynamické casting v C++:

Dynamické casting v programovacím jazyce C++ je založen na konceptu zvaném RTTI (Run Time Type Identification). RTTI je funkce přítomná v několika programovacích jazycích, jako je C/C++, Ada a Object Pascal. Identifikace nebo informace typu za běhu je funkce, která identifikuje a extrahuje informace týkající se podrobností o datovém typu objektu za běhu programu. Tato funkce poskytuje bezpečnou cestu pro metody odlévání typu, jako je funkce „typeid“ nebo dynamické odlévání typu. Zjišťuje informace o datovém typu v době běhu a pomáhá při konverzi datového typu, když jsou operátoři ve hře.



Dynamické odlévání se většinou používá v C++ pro bezpečné odlévání za běhu. Pro práci s dynamickým přetypováním musí mít základní třída 1 virtuální funkci. Dynamické přetypování funguje pouze s polymorfními základními třídami, protože tyto informace využívá k určení bezpečného přehazování dolů. Operátor dynamického lití provádí dynamické lití. Nyní, když víme o konceptech souvisejících s dynamickým litím, můžeme přejít k implementační části. Podívejme se nejprve na syntaxi pro použití dynamického castingu v programovacím jazyce C++, který je napsán níže:

# “dynamic_cast (Výraz)”

Ve výše uvedeném výrazu první část popisuje jméno operátora; do lomených závorek napíšeme název datového typu, na který potřebujeme převést náš výraz, a do kulatých závorek zapíšeme název proměnné nebo objektu, který chceme převést.

Nyní, když víme, jak používat operátor dynamického přetypování a vyplnit parametry pro převod datových typů proměnných, můžeme jej použít pro převod datových typů proměnných.

Použití metody dynamického obsazení v Ubuntu 20.04:

K implementaci tohoto konceptu musíme použít několik tříd, se kterými budeme pracovat pro převod objektů třídy dědičností. Abychom to mohli udělat, musíme nejprve vědět, že programový soubor C++ v prostředí Ubuntu je uložen s příponou „.cpp“, takže k vytvoření tohoto souboru na naší ploše otevřete terminál a zadejte „cd Desktop“ na příkazového řádku, poté stiskněte enter a napište „touch filename .cpp“ pro vytvoření souboru s příponou „.cpp“. Nyní do tohoto souboru napíšeme kód pro vytvoření základní třídy a 2 odvozených tříd a v kódu ovladače použijeme operátor dynamického přetypování.

  Grafické uživatelské rozhraní, text Popis automaticky vygenerován

Po kliknutí na tlačítko Uložit soubor ukončete. Vraťte se do terminálu a vytvořte soubor pomocí příkazu „g++“ s názvem vašeho souboru a příponou „.cpp“. Pomocí tohoto příkazu bude vytvořen soubor s příponou „.out“. Nyní můžete tento soubor spustit zadáním „./“ následovaného příponou „.out“.
  Text Popis automaticky vygenerován

V tomto programu ukazatel základní třídy ukládá odvozené objekty třídy 1 (d1). Základní třída dynamického castingu, ukazatel zachoval objekt Derived1 a přidělil jej odvozené třídě 1, která poskytla platné dynamické lití.

Závěr :

Tento článek nás naučil metodu typového odlévání používanou v programovacím jazyce C++. Podrobně byl probrán i typ odlévání a zaměřili jsme se na potřebu, proč takové metody v programování v C++ používáme. Diskutovali jsme o asistenční funkci, která pomáhá při převodu datového typu proměnné načítáním informací a ověřováním správné konverze nazývané RTTI. Implementovali jsme také koncept dynamického přetypování pomocí operátoru dynamického přetypování ve výrazu v programovacím jazyce C++ v prostředí Ubuntu 20.04.