Dynamic_Cast C++

Dynamic Cast C



C++-ohjelmointikielen dynaamista castia käsitellään tässä artikkelissa. Aluksi meidän on ymmärrettävä valun käsite ja monet valutyypit. Muuttujan tietotyypin muuttamisprosessi tunnetaan nimellä casting. Casting on jaettu kahteen luokkaan C++-ohjelmointikielessä: implisiittinen valu ja eksplisiittinen valu.

Tietotyyppimuunnos C++:ssa:

Tyyppivalu on toimenpide, jolla tietotyyppi muutetaan joksikin muuksi tietotyypiksi. C++-ohjelmointikielessä on kahta tyyppiä valua tai tyypin muuntamista: implisiittinen ja eksplisiittinen valu. Automaattinen tyyppimuunnos on toinen nimi implisiittiselle tyyppilähetykselle. Kääntäjä suorittaa sen reaaliaikaisen käännöksen aikana, eikä se vaadi käyttäjän syötteitä tai toimia. Kun lausekkeessa on kahdenlaisia ​​tietotyyppejä, tämä muoto esiintyy. Esimerkiksi:

  Graafinen käyttöliittymä, teksti, sovellus Kuvaus luodaan automaattisesti







Annetussa koodissa nähdään, että viimeiselle rivilausekkeelle lisätään kokonaislukumuuttuja ja merkkimuuttuja ja kokonaislukumuuttujan “i” arvoa muutetaan. ASCII-numerovastaava 'a' muunnetaan merkkiarvoksi ja lisätään muuttujan 'i' kokonaislukuarvoon tässä käskyssä. Jos muuttujan “i” arvo tulostetaan, tuloksena on molemmat nämä arvot yhteensä. Kääntäjä muuntaa automaattisesti merkkimuuttujan tietotyypin kokonaislukutietotyypiksi muuntamalla sen oikeanpuoleisen aakkoston ASCII-standardiarvoksi, mikä on loistava esimerkki implisiittisestä tai automaattisesta tyyppimuunnoksesta ajon aikana.



Mitä tulee nimenomaiseen tyyppivalamiseen tai tyypin muuntamiseen, se ei ole automaattinen prosessi. käyttäjän on muunnettava manuaalisesti muuttujan tietotyyppi toiseksi koodin muuttujatyypiksi. Tietotyypit on yleensä järjestetty hierarkiaan niiden muistitilan ja niihin mahtuvan tiedon määrän perusteella. Joten kun alemman kertaluvun tietotyyppiä käytetään minkä tahansa tiedon tallentamiseen, mutta se on muutettava korkeamman asteen tietotyypiksi, jotta tiedon menetys voidaan minimoida ja tietoa voidaan tallentaa yhä enemmän, eksplisiittisen tyypin valu tai tyyppimuunnos on yleinen. tehty. Esimerkiksi koska kokonaislukutyyppinen muuttuja ei voi tallentaa arvoja desimaalipilkun jälkeen, saatamme menettää joitakin tietoja, jos jatkamme kokonaislukumuuttujien käyttöä. Tämän menetyksen välttämiseksi muunnamme kokonaislukumuuttujan float-muuttujaksi, tallennamme arvot desimaalipisteiden jälkeen ja estämme tietojen häviämisen. Eksplisiittinen tyyppimuunnos C++-ohjelmointikielessä voidaan suorittaa kahdella tavalla: tehtävänä tai käyttämällä cast-operaattoria. Osoitusmuunnos tehdään koodilausekkeella, ja tämän lausekkeen syntaksi on annettu alla.



# '(tietotyyppi) lauseke'

Yllä olevassa koodissa meidän on laitettava kelvollinen tietotyyppi hakasulkeeseen ja hakasulkeen jälkeen on kirjoitettava muuttuja tai lauseke, jota haluamme muokata hakasulkeeseen kirjoitettuun tietotyyppiin.





Nyt tarkastelemme cast-operaattoreiden suorittamaa muunnostyyppiä C++-ohjelmointikielellä. Cast-operaattoreita kutsutaan myös unaarioperaattoreiksi, jotka pakottavat muuttujan vaihtamaan tietotyyppinsä olemassa olevasta toiseen. Casting-operaattoreita on neljää tyyppiä: Static cast, Dynamic cast, Const cast ja Re-interpret cast.

Dynaaminen suoratoisto C++:ssa:

Dynaaminen valu C++-ohjelmointikielessä perustuu konseptiin nimeltä RTTI (Run Time Type Identification). RTTI on funktio, joka esiintyy useissa ohjelmointikielissä, kuten C/C++, Ada ja Object Pascal. Run-Time Type Identification tai Information on toiminto, joka tunnistaa ja poimii tietoja kohteen tietotyypin yksityiskohdista ohjelman ajon aikana. Tämä toiminto tarjoaa turvallisen polun tyyppivalumenetelmille, kuten 'typeid'-funktiolle tai dynaamiselle tyyppivalulle. Se havaitsee tietotyyppitiedot ajon aikana ja auttaa tietotyypin muuntamista operaattorien ollessa pelissä.



Dynaamista valua käytetään enimmäkseen C++:ssa ajonaikaiseen turvalliseen alasvaluun. Jotta voit työskennellä dynaamisen castin kanssa, perusluokassa on oltava yksi virtuaalinen funktio. Dynaaminen valu toimii vain polymorfisten perusluokkien kanssa, koska se käyttää näitä tietoja turvallisen alasvalun määrittämiseen. Dynaaminen valuoperaattori tekee dynaamista valua. Nyt kun tiedämme dynaamiseen valuun liittyvät käsitteet, voimme siirtyä toteutusosaan. Katsotaanpa ensin syntaksia dynaamisen valun käyttämiselle C++-ohjelmointikielellä, joka on kirjoitettu alla:

# 'dynaaminen_cast (lauseke)'

Yllä olevassa lausekkeessa ensimmäinen osa kuvaa operaattorin nimeä; kulmasuluissa kirjoitamme sen tietotyypin nimen, johon meidän täytyy muuntaa lauseke, ja pyöreisiin suluihin kirjoitamme muuttujan tai objektin nimen, jonka haluamme muuntaa.

Nyt kun osaamme käyttää dynaamista cast -operaattoria ja täyttää parametrit muuttujien tietotyyppien muuntamiseen, voimme käyttää sitä muuttujien tietotyyppien muuntamiseen.

Dynaamisen lähetysmenetelmän käyttäminen Ubuntu 20.04:ssä:

Tämän konseptin toteuttamiseksi meidän on käytettävä useita luokkia luokan objektien muuntamiseksi periytymisen perusteella. Jotta voimme tehdä sen, meidän on ensin tiedettävä, että C++-ohjelmatiedosto Ubuntu-ympäristössä on tallennettu tunnisteella '.cpp', joten luodaksesi tämän tiedoston työpöydällemme, avaa pääte ja kirjoita 'cd Desktop' komentoriviltä, ​​paina Enter ja kirjoita 'touch filename .cpp' luodaksesi tiedoston, jonka tunniste on '.cpp'. Nyt kirjoitamme kyseiseen tiedostoon koodin perusluokan ja 2 johdetun luokan luomiseksi, ja ajurikoodissa käytämme dynaamista cast -operaattoria.

  Graafinen käyttöliittymä, teksti Kuvaus luodaan automaattisesti

Poistu tiedostosta napsauttamalla Tallenna-painiketta. Palaa päätteeseen ja luo tiedosto komennolla 'g++' tiedostonimelläsi ja '.cpp'-tunnisteella. Tällä komennolla luodaan tiedosto, jonka tunniste on '.out'. Voit nyt suorittaa tiedoston kirjoittamalla './' ja sen jälkeen '.out'-tunnisteen.
  Teksti Kuvaus luotu automaattisesti

Tässä ohjelmassa perusluokan osoitin tallentaa johdetut luokan 1 objektit (d1). Dynaamisen valun perusluokka, osoitin säilytti Derived1-objektin ja osoitti sen johdettuun luokkaan 1, joka tarjosi kelvollisen dynaamisen valun.

Johtopäätös :

Tämä artikkeli opetti meille C++-ohjelmointikielessä käytetyn tyyppivalumenetelmän. Valutyypistä keskusteltiin myös yksityiskohtaisesti ja keskityimme tarpeeseen, miksi käytämme tällaisia ​​menetelmiä C++-ohjelmoinnissa. Keskustelimme aputoiminnosta, joka auttaa muuntamaan muuttujan tietotyyppiä hakemalla tietoja ja tarkistamalla oikean muunnoksen nimeltä RTTI. Toteutimme myös dynaamisen castingin konseptin käyttämällä dynaamista cast -operaattoria C++-ohjelmointikielen lausekkeessa Ubuntu 20.04 -ympäristössä.