Dynamic_Cast C++

Dynamic Cast C



Šajā rakstā tiks apskatīta dinamiskā apraide C++ programmēšanas valodā. Lai sāktu, mums ir jāsaprot liešanas jēdziens un daudzi liešanas veidi. Mainīgā datu tipa maiņas process ir pazīstams kā apraide. C++ programmēšanas valodā apraide ir sadalīta divās kategorijās: netiešā apraide un tiešā apraide.

Datu veida konvertēšana C++ valodā:

Tipa apraide ir procedūra datu tipa maiņai uz kādu citu datu tipu. C++ programmēšanas valodā ir divu veidu liešana vai tipa pārveidošana: netiešā un tiešā liešana. Automātiskā tipa konvertēšana ir vēl viens netiešās tipa apraides nosaukums. To veic kompilators reāllaika kompilācijas laikā, un tam nav nepieciešama nekāda lietotāja ievade vai darbība. Ja izteiksmē ir divu veidu datu tipi, notiek šī liešanas forma. Piemēram:

  Grafiskais lietotāja interfeiss, teksts, lietojumprogramma Apraksts tiek ģenerēts automātiski







Dotajā kodā redzams, ka pēdējās rindiņas izteiksmē tiek ievietots vesela skaitļa mainīgais un rakstzīmju mainīgais, un tiek mainīta veselā skaitļa mainīgā “i” vērtība. ASCII skaitļa ekvivalents “a” tiks pārveidots par rakstzīmju vērtību un pievienots mainīgā “i” veselam skaitlim šajā paziņojumā. Ja tiek izdrukāta mainīgā “i” vērtība, rezultāts būs abu šo vērtību kopsumma. Kompilators automātiski pārveido rakstzīmju mainīgā datu tipu par veselu skaitļu datu tipu, pārvēršot to labās puses alfabēta ASCII standarta vērtībā, kas ir lielisks piemērs netiešai vai automatizētai tipa konvertēšanai izpildes laikā.



Tagad, kad runa ir par precīza tipa liešanu vai tipa pārveidošanu, tas nav automatizēts process; lietotājam ir manuāli jāpārvērš mainīgā datu tips kodā uz cita veida mainīgo. Datu tipi parasti tiek sakārtoti hierarhijā, pamatojoties uz to atmiņas vietu un informācijas apjomu, ko tie var saturēt. Tātad, ja jebkuras informācijas glabāšanai tiek izmantots zemākas kārtas datu tips, bet tas ir jāpārveido par augstākas kārtas datu tipu, lai varētu samazināt informācijas zudumus un saglabāt arvien vairāk informācijas, parasti tiek izmantota skaidra tipa liešana vai tipa konvertēšana. darīts. Piemēram, tā kā vesela skaitļa tipa mainīgais nevar saglabāt vērtības aiz komata, mēs varam zaudēt daļu informācijas, ja turpināsim izmantot veselu skaitļu mainīgos. Lai izvairītos no šī zaudējuma, mēs pārvēršam veselo skaitļu mainīgo par peldošo mainīgo, saglabājot vērtības aiz komata un novēršot informācijas zudumu. Skaidro tipa pārveidošanu C++ programmēšanas valodā var veikt vienā no diviem veidiem: izmantojot piešķiršanu vai izmantojot cast operatoru. Piešķiršanas konvertēšana tiek veikta koda izteiksmē, un šīs izteiksmes sintakse ir sniegta tālāk.



# “(datu veida) izteiksme”

Iepriekš minētajā kodā iekavās ir jāievieto derīgs datu tips, un pēc iekavas mums ir jāieraksta mainīgais vai izteiksme, kuru mēs vēlamies modificēt, iekavā ierakstītajā datu tipā.





Tagad mēs apskatīsim konvertēšanas veidu, ko veic cast operatori C++ programmēšanas valodā. Cast operatorus sauc arī par unārajiem operatoriem, kas piespiež mainīgo mainīt tā datu tipu no viena esošā uz citu. Ir četru veidu apraides operatori: statiskā apraide, dinamiskā apraide, konstanta apraide un atkārtota apraide.

Dinamiskā apraide C++ valodā:

Dinamiskā apraide C++ programmēšanas valodā ir balstīta uz koncepciju, ko sauc par RTTI (Run Time Type Identification). RTTI ir funkcija, kas pieejama vairākās programmēšanas valodās, piemēram, C/C++, Ada un Object Pascal. Izpildes laika tipa identifikācija vai informācija ir funkcija, kas programmas izpildes laikā identificē un iegūst informāciju par objekta datu tipu. Šī funkcija nodrošina drošu ceļu tipa liešanas metodēm, piemēram, funkcijai “typeid” vai dinamiskā tipa liešanai. Tas nosaka datu tipa informāciju par izpildes laiku un palīdz konvertēt datu tipu, kad operatori spēlē.



Dinamiskā liešana galvenokārt tiek izmantota C++ valodā, lai nodrošinātu darbības laiku drošu liešanu. Lai strādātu ar dinamisko apraidi, bāzes klasei ir jābūt 1 virtuālai funkcijai. Dinamiskā liešana darbojas tikai ar polimorfām bāzes klasēm, jo ​​tā izmanto šo informāciju, lai noteiktu drošu lešanu. Dinamiskās atrašanas operators veic dinamisko liešanu. Tagad, kad mēs zinām par jēdzieniem, kas saistīti ar dinamisko liešanu, varam pāriet uz ieviešanas daļu. Vispirms apskatīsim sintaksi dinamiskās liešanas izmantošanai C++ programmēšanas valodā, kas ir uzrakstīta zemāk:

# “dynamic_cast (Expression)”

Iepriekš minētajā izteiksmē pirmā daļa apraksta operatora nosaukumu; leņķa iekavās mēs ierakstām tā datu tipa nosaukumu, kas mums ir nepieciešams, lai pārvērstu izteiksmi, un apaļajās iekavās mēs ierakstām mainīgā vai objekta nosaukumu, kuru vēlamies konvertēt.

Tagad, kad mēs zinām, kā izmantot dinamiskās apraides operatoru un aizpildīt parametrus mainīgo datu tipu konvertēšanai, mēs varam to izmantot, lai pārveidotu mainīgo datu tipus.

Dinamiskās apraides metodes izmantošana Ubuntu 20.04:

Lai īstenotu šo koncepciju, mums ir jāizmanto vairākas klases, ar kurām strādāt, lai pārveidotu klases objektus pēc mantojuma. Tātad, lai to izdarītu vispirms, mums vispirms jāzina, ka C++ programmas fails Ubuntu vidē tiek glabāts ar paplašinājumu “.cpp”, tāpēc, lai izveidotu šo failu darbvirsmā, atveriet termināli un ierakstiet “cd Desktop”. komandrinda, pēc tam nospiediet taustiņu Enter un ierakstiet “touch filename .cpp”, lai izveidotu failu ar paplašinājumu “.cpp”. Tagad mēs ierakstīsim kodu šajā failā, lai izveidotu bāzes klasi un 2 atvasinātas klases, un draivera kodā mēs izmantosim dinamiskās apraides operatoru.

  Grafiskais lietotāja interfeiss, automātiski ģenerēts teksts Apraksts

Izejiet no faila pēc noklikšķināšanas uz saglabāšanas pogas. Atgriezieties terminālī un izveidojiet failu, izmantojot komandu “g++” ar faila nosaukumu un paplašinājumu “.cpp”. Izmantojot šo komandu, tiks izveidots fails ar paplašinājumu “.out”. Tagad varat palaist šo failu, ievadot “./”, kam seko paplašinājums “.out”.
  Teksta apraksts tiek ģenerēts automātiski

Šajā programmā bāzes klases rādītājs saglabā atvasinātus 1. klases objektus (d1). Dinamiskās liešanas bāzes klase, rādītājs saglabāja Derived1 objektu un piešķīra to atvasinātajai 1. klasei, kas nodrošināja derīgu dinamisko atlējumu.

Secinājums :

Šis raksts mums iemācīja tipa liešanas metodi, ko izmanto C++ programmēšanas valodā. Detalizēti tika apspriests arī liešanas veids, un mēs koncentrējāmies uz nepieciešamību, kāpēc mēs izmantojam šādas metodes C++ programmēšanā. Mēs apspriedām palīdzības funkciju, kas palīdz konvertēt mainīgā datu tipu, iegūstot informāciju un pārbaudot, vai konvertēšana ir pareiza, ko sauc par RTTI. Mēs arī ieviesām dinamiskās apraides koncepciju, izmantojot dinamiskās apraides operatoru izteiksmē C++ programmēšanas valodā Ubuntu 20.04 vidē.