Dynamic_Cast C++

Dynamic Cast C



Ang dynamic na cast sa C++ programming language ay tatalakayin sa artikulong ito. Upang magsimula, dapat nating maunawaan ang paniwala ng paghahagis at maraming uri ng paghahagis. Ang proseso ng pagbabago sa uri ng data ng isang variable ay kilala bilang pag-cast. Ang pag-cast ay nahahati sa dalawang kategorya sa C++ programming language: implicit casting at explicit casting.

Pag-convert ng uri ng data sa C++:

Ang type casting ay ang pamamaraan ng pagpapalit ng uri ng data sa ibang uri ng data. Mayroong dalawang uri ng casting o type na conversion sa C++ programming language: implicit at tahasang pag-cast. Ang awtomatikong uri ng conversion ay isa pang pangalan para sa implicit typecasting. Ginagawa ito ng compiler sa panahon ng real-time na compilation at hindi nangangailangan ng anumang input o aksyon ng user. Kapag mayroong dalawang uri ng mga uri ng data sa isang expression, nangyayari ang ganitong paraan ng pag-cast. Halimbawa:

  Ang graphical na interface ng gumagamit, teksto, paglalarawan ng application ay awtomatikong nabuo







Sa ibinigay na code, makikita natin na ang isang integer variable at isang character na variable ay ipinasok sa huling linya ng expression, at ang halaga ng integer variable na 'i' ay binago. Ang numero ng ASCII na katumbas ng 'a' ay iko-convert sa isang halaga ng character at idaragdag sa halaga ng integer ng variable na 'i' sa pahayag na ito. Kung ang halaga ng variable na 'i' ay naka-print, ang resulta ay magiging kabuuan ng parehong mga halagang ito. Awtomatikong binabago ng compiler ang uri ng data ng variable ng character sa isang integer na uri ng data sa pamamagitan ng pag-convert nito sa karaniwang halaga ng ASCII ng alpabeto sa kanan, na isang magandang halimbawa ng implicit o awtomatikong uri ng conversion sa oras ng pagtakbo.



Ngayon, pagdating sa tahasang pag-cast ng uri o conversion ng uri, hindi ito isang automated na proseso; dapat manu-manong i-convert ng user ang isang uri ng data ng isang variable sa isa pang uri ng variable sa code. Ang mga uri ng data ay karaniwang nakaayos sa isang hierarchy batay sa kanilang memory space at ang dami ng impormasyon na maaari nilang hawakan. Kaya, kapag ang isang lower order na uri ng data ay ginagamit upang mag-imbak ng anumang impormasyon ngunit kailangang baguhin sa isang mas mataas na order na uri ng data upang mabawasan ang pagkawala ng impormasyon at mas maraming impormasyon ang maiimbak, ang tahasang uri ng pag-cast o uri ng conversion ay karaniwang tapos na. Halimbawa, dahil hindi maaaring mag-imbak ng mga value ang isang variable na uri ng integer pagkatapos ng decimal point, maaari kaming mawalan ng ilang impormasyon kung patuloy kaming gagamit ng mga variable na integer. Upang maiwasan ang pagkawalang ito, kino-convert namin ang integer variable sa float variable, nagse-save ng mga value pagkatapos ng mga decimal point at pinipigilan ang pagkawala ng impormasyon. Ang tahasang uri ng conversion sa C++ programming language ay maaaring magawa sa isa sa dalawang paraan: sa pamamagitan ng pagtatalaga o sa pamamagitan ng paggamit ng cast operator. Ang conversion ng assignment ay ginagawa sa isang code expression, at ang syntax para sa expression na ito ay ibinigay sa ibaba.



# '(uri ng data) na expression'

Sa code sa itaas, dapat tayong maglagay ng wastong uri ng data sa loob ng bracket, at pagkatapos ng bracket, dapat nating isulat ang variable o expression na nais nating baguhin sa uri ng data na nakasulat sa loob ng bracket.





Ngayon ay titingnan natin ang uri ng conversion na ginawa ng mga cast operator sa C++ programming language. Ang mga operator ng cast ay tinatawag ding unary operator na pumipilit sa isang variable na baguhin ang uri ng data nito mula sa isang umiiral na patungo sa isa pa. May apat na uri ng casting cast operator: Static cast, Dynamic cast, Const cast, at Re-interpret cast.

Dynamic na pag-cast sa C++:

Ang dinamikong paghahagis sa C++ programming language ay batay sa isang konsepto na tinatawag na RTTI (Run Time Type Identification). Ang RTTI ay isang function na naroroon sa ilang programming language tulad ng C/C++, Ada, at Object Pascal. Ang Run-Time Type Identification o Impormasyon ay isang function na tumutukoy at kumukuha ng impormasyon tungkol sa mga detalye ng uri ng data ng isang bagay sa oras ng pagtakbo ng isang programa. Ang function na ito ay nagbibigay ng isang ligtas na landas para sa uri ng mga paraan ng pag-cast tulad ng 'typeid' na function o dynamic na uri ng pag-cast. Nakikita nito ang impormasyon ng uri ng data sa oras ng pagtakbo at tinutulungan nito ang pag-convert ng uri ng data kapag naglalaro ang mga operator.



Ang dynamic na casting ay kadalasang ginagamit sa C++ para sa run-time na ligtas na down casting. Upang gumana sa dynamic na cast, ang batayang klase ay dapat magkaroon ng 1 virtual function. Gumagana lang ang dynamic na cast sa mga polymorphic base class dahil ginagamit nito ang impormasyong ito para matukoy ang ligtas na down casting. Ang isang dynamic na cast operator ay gumagawa ng dynamic na pag-cast. Ngayong alam na natin ang tungkol sa mga konseptong nauugnay sa dynamic na pag-cast, maaari na tayong pumunta sa bahagi ng pagpapatupad. Tingnan muna natin ang syntax para sa paggamit ng dynamic na pag-cast sa C++ programming language, na nakasulat sa ibaba:

# “dynamic_cast (Expression)”

Sa expression sa itaas, inilalarawan ng unang bahagi ang pangalan ng operator; sa mga angle bracket, isinusulat namin ang pangalan ng uri ng data na kailangan naming i-convert ang aming expression, at sa mga round bracket, isinusulat namin ang variable o pangalan ng object na gusto naming i-convert.

Ngayong alam na natin kung paano gamitin ang dynamic na cast operator at punan ang mga parameter para sa pag-convert ng mga uri ng data ng mga variable, magagamit na natin ito para i-convert ang mga uri ng data ng mga variable.

Paggamit ng Dynamic na paraan ng cast sa Ubuntu 20.04:

Upang maipatupad ang konseptong ito, dapat tayong gumamit ng ilang mga klase upang magamit para sa pag-convert ng mga bagay ng klase sa pamamagitan ng mana. Kaya, para gawin muna iyon, dapat muna nating malaman na ang C++ program file sa kapaligiran ng Ubuntu ay naka-store na may extension na “.cpp,” kaya para gawin ang file na ito sa aming desktop, magbukas ng terminal at i-type ang “cd Desktop” sa command line, pagkatapos ay pindutin ang enter at i-type ang “touch filename .cpp” para gumawa ng file na may extension na “.cpp”. Ngayon ay magsusulat kami ng code sa file na iyon upang lumikha ng base class at 2 derived classes, at sa driver code, gagamitin namin ang dynamic cast operator.

  Graphical na user interface, awtomatikong nabuo ang paglalarawan ng teksto

Lumabas sa file pagkatapos i-click ang save button. Bumalik sa terminal at buuin ang file gamit ang command na 'g++' kasama ang pangalan ng iyong file at ang extension na '.cpp'. Ang isang file na may extension na '.out' ay gagawin gamit ang command na ito. Maaari mo na ngayong patakbuhin ang file na iyon sa pamamagitan ng paglalagay ng './' na sinusundan ng iyong '.out' na extension.
  Awtomatikong nabuo ang Paglalarawan ng Teksto

Sa programang ito, ang base class pointer ay nag-iimbak ng mga nakuhang class 1 objects (d1). Ang dynamic na casting base class, pinanatili ng pointer ang Derived1 object at inilaan ito sa derived class 1, na nagbigay ng wastong dynamic na casting.

Konklusyon :

Itinuro sa amin ng artikulong ito ang uri ng paraan ng casting na ginagamit sa C++ programming language. Ang uri ng paghahagis ay tinalakay din nang detalyado, at nakatuon kami sa pangangailangan kung bakit ginagamit namin ang mga ganitong pamamaraan sa C++ programming. Tinalakay namin ang function ng tulong na tumutulong sa pag-convert ng uri ng data ng variable sa pamamagitan ng pagkuha ng impormasyon at pag-verify para sa tamang conversion na tinatawag na RTTI. Ipinatupad din namin ang konsepto ng Dynamic na pag-cast sa pamamagitan ng paggamit ng dynamic na cast operator sa isang expression sa C++ programming language sa Ubuntu 20.04 environment.