Динамиц_Цаст Ц++

Dinamic Cast C



У овом чланку ће бити речи о динамичком преливању у програмском језику Ц++. За почетак, морамо разумети појам ливења и многе врсте ливења. Процес измене типа података променљиве познат је као кастинг. Пребацивање је подељено у две категорије у програмском језику Ц++: имплицитно превођење и експлицитно превођење.

Конверзија типа података у Ц++:

Преливање типа је поступак промене типа података у неки други тип података. Постоје два типа преливања или конверзије типова у програмском језику Ц++: имплицитно и експлицитно превођење. Аутоматска конверзија типова је друго име за имплицитно примену типа. Изводи га компајлер током компилације у реалном времену и није потребан никакав кориснички унос или радња. Када у изразу постоје две врсте типа података, јавља се овај облик преливања. На пример:

  Аутоматски генерисан графички кориснички интерфејс, текст, опис апликације







У датом коду видимо да су у последњем линијском изразу уметнуте целобројне променљиве и карактерне променљиве, а вредност целобројне променљиве „и” је промењена. АСЦИИ број еквивалентан „а“ биће конвертован у вредност знака и додан целобројној вредности променљиве „и“ у овој изјави. Ако се одштампа вредност променљиве „и“, резултат ће бити укупан износ обе ове вредности. Компајлер аутоматски трансформише тип података карактерне променљиве у целобројни тип података тако што га конвертује у АСЦИИ стандардну вредност абецеде са десне стране, што је одличан пример имплицитне или аутоматизоване конверзије типа током времена извршавања.



Сада, када је у питању експлицитно превођење или конверзија типа, то није аутоматизован процес; корисник мора ручно да конвертује тип података променљиве у други тип променљиве у коду. Типови података су обично распоређени у хијерархији на основу њиховог меморијског простора и количине информација које могу да држе. Дакле, када се тип података нижег реда користи за складиштење било које информације, али мора да се трансформише у тип података вишег реда како би се губитак информација свео на минимум и све више информација могло да се ускладишти, експлицитно пребацивање типа или конверзија типа је обично Готово. На пример, пошто променљива целобројног типа не може да чува вредности после децималне запете, можемо изгубити неке информације ако наставимо да користимо целобројне променљиве. Да бисмо избегли овај губитак, конвертујемо целобројну променљиву у променљиву са плутајућим, чувајући вредности после децималних тачака и спречавајући губитак информација. Експлицитна конверзија типа у програмском језику Ц++ може се постићи на један од два начина: преко додељивања или коришћењем оператора цаст. Конверзија доделе се врши у кодном изразу, а синтакса за овај израз је дата испод.



# „(тип података) израз“

У горњем коду морамо ставити исправан тип података унутар заграде, а након заграде морамо написати променљиву или израз који желимо да изменимо у тип података написан унутар заграде.





Сада ћемо размотрити врсту конверзије коју врше цаст оператори у програмском језику Ц++. Оператори пребацивања се такође називају унарним операторима који приморавају променљиву да промени свој тип података из једног постојећег у други. Постоје четири типа оператора преливања: статичко пребацивање, динамичко пребацивање, континуално пребацивање и поновно тумачење.

Динамичко пребацивање у Ц++:

Динамичко превођење у програмском језику Ц++ заснива се на концепту који се зове РТТИ (Идентификација типа времена рада). РТТИ је функција присутна у неколико програмских језика као што су Ц/Ц++, Ада и Објецт Пасцал. Идентификација или информација типа у току извршавања је функција која идентификује и издваја информације у вези са детаљима типа података објекта у времену извођења програма. Ова функција обезбеђује безбедну путању за методе преливања типа као што је функција „типеид“ или динамичко превођење типа. Он детектује информације о типу података о времену извођења и помаже при конверзији типа података када су оператери у игри.



Динамичко ливење се углавном користи у Ц++-у за безбедно ливење на доле током рада. Да би радила са динамичким пребацивањем, основна класа мора имати 1 виртуелну функцију. Динамичко пребацивање ради само са полиморфним базним класама јер користи ове информације да одреди безбедно пребацивање на доле. Оператор динамичког пребацивања врши динамичко пребацивање. Сада када знамо о концептима везаним за динамичко ливење, можемо прећи на део имплементације. Хајде да прво погледамо синтаксу за коришћење динамичког пребацивања у програмском језику Ц++, која је написана у наставку:

# „динамиц_цаст <нев_типе>(Израз)“

У горњем изразу, први део описује име оператора; у угаоним заградама уписујемо назив типа података у који треба да конвертујемо наш израз, ау округлим заградама пишемо име променљиве или објекта који желимо да конвертујемо.

Сада када знамо како да користимо динамички цаст оператор и попунимо параметре за претварање типова података у променљиве, можемо га користити за конверзију типова података променљивих.

Коришћење методе динамичког пребацивања у Убунту 20.04:

Да бисмо имплементирали овај концепт, морамо користити неколико класа за рад за конверзију објеката класе наслеђивањем. Дакле, да бисмо то прво урадили, прво морамо да знамо да је датотека Ц++ програма у Убунту окружењу ускладиштена са екстензијом „.цпп“, па да бисте креирали ову датотеку на нашој радној површини, отворите терминал и укуцајте „цд Десктоп“ на командну линију, затим притисните ентер и откуцајте „тоуцх филенаме .цпп“ да бисте креирали датотеку са екстензијом „.цпп“. Сада ћемо написати код у тој датотеци да бисмо креирали основну класу и 2 изведене класе, а у коду драјвера користићемо динамички оператор цаст.

  Графички кориснички интерфејс, текст Опис аутоматски генерисан

Изађите из датотеке након што кликнете на дугме за чување. Вратите се на терминал и направите датотеку користећи команду „г++“ са именом датотеке и екстензијом „.цпп“. Помоћу ове команде биће креирана датотека са екстензијом “.оут”. Сада можете покренути ту датотеку тако што ћете унети „./” након чега следи екстензија „.оут”.
  Текст Опис се аутоматски генерише

У овом програму, показивач основне класе чува изведене објекте класе 1 (д1). Основна класа динамичког кастинга, показивач је задржао објекат Деривед1 и доделио га изведеној класи 1, која је обезбедила важеће динамичко пребацивање.

Закључак :

Овај чланак нас је научио методу преливања типова који се користи у програмском језику Ц++. О типу кастинга је такође било речи детаљно, а ми смо се фокусирали на потребу зашто користимо такве методе у Ц++ програмирању. Разговарали смо о функцији помоћи која помаже у конверзији типа података променљиве тако што преузима информације и проверава тачну конверзију која се зове РТТИ. Такође смо имплементирали концепт динамичког превођења коришћењем динамичког оператора превођења у изразу у програмском језику Ц++ у окружењу Убунту 20.04.