Dynamic_cast C ++

Dynamic_cast C ++
Dynamiczna obsada w języku programowania C ++ zostanie omówiona w tym artykule. Na początek musimy zrozumieć pojęcie castingu i wiele rodzajów castingu. Proces zmiany typu danych zmiennej jest znany jako odlewanie. Casting jest podzielony na dwie kategorie w języku programowania C ++: niejawne casting i jawne casting.

Konwersja typu danych w C ++:

Typ rzucanie to procedura zmiany typu danych na inny typ danych. Istnieją dwa rodzaje konwersji odlewów lub typu w języku programowania C ++: niejawne i jawne casting. Zautomatyzowana konwersja typu to inna nazwa niejawnego typu typu. Jest wykonywany przez kompilator podczas kompilacji w czasie rzeczywistym i nie wymaga żadnego wprowadzania lub działania użytkownika. Gdy w wyrażeniu występują dwa rodzaje danych, występuje ta forma odlewania. Na przykład:

W danym kodzie widzimy, że zmienna liczb całkowita i zmienna znakowa są wstawiane w wyrażeniu ostatniego wiersza, a wartość zmiennej liczb całkowity. Numer ASCII odpowiednik „A” zostanie przekonwertowany na wartość znaku i dodana do wartości liczb całkowita zmiennej „i” w tym instrukcji. Jeśli wartość zmiennej „i” zostanie wydrukowana, wynik będzie suma obu tych wartości. Kompilator automatycznie przekształca typ danych zmiennej postaci do typu danych liczb całkowitych, przekształcając ją w standardową wartość ASCII alfabetu po prawej.

Teraz, jeśli chodzi o jawne odlewanie lub konwersję typu, nie jest to proces zautomatyzowany; Użytkownik musi ręcznie przekonwertować typ danych zmiennej na inny typ zmiennej w kodzie. Typy danych są zwykle ułożone w hierarchii na podstawie ich przestrzeni pamięci i ilości informacji, które mogą przechowywać. Tak więc, gdy typ danych o niższym rzędu jest wykorzystywany do przechowywania dowolnej informacji, ale musi zostać przekształcony w typ danych wyższego rzędu, aby można było zminimalizować utratę informacji, a więcej informacji można przechowywać, zwykle rzucanie lub konwersja typu jest zwykle jawne. zrobione. Na przykład, ponieważ zmienna typu liczb całkowitych nie może przechowywać wartości po punkcie dziesiętnym, możemy stracić pewne informacje, jeśli nadal będziemy korzystać z zmiennych całkowitych. Aby uniknąć tej straty, konwertujemy zmienną liczbową na zmienną zmiennoprzecinkową, oszczędzając wartości po punktach dziesiętnych i zapobiegając utratę informacji. Jawna konwersja typu w języku programowania C ++ może być wykonana na jeden z dwóch sposobów: poprzez przypisanie lub za pomocą operatora odlewanego. Konwersja przypisania odbywa się w wyrażeniu kodu, a składnia dla tego wyrażenia jest podana poniżej.

# „(Typ danych) wyrażenie”

W powyższym kodzie musimy umieścić prawidłowy typ danych w wspornikach, a po wspornikach musimy napisać zmienną lub wyrażenie, które chcemy zmodyfikować w typach danych zapisanych wewnątrz wspornika.

Teraz przyjrzymy się typowi konwersji wykonanej przez operatorów odlewów w języku programowania C ++. Operatorzy odlewu są również nazywani operatorami niemacznymi, którzy zmuszają zmienną do zmiany typu danych z jednego istniejącego na drugi. Istnieją cztery rodzaje operatorów odlewów: statyczna obsada, dynamiczna obsada, Const Cast i Re-interpret obsada.

Dynamiczne odlewanie w C ++:

Dynamiczne odlewanie w języku programowania C ++ opiera się na koncepcji o nazwie RTTI (identyfikacja typu czasu działania). RTTI jest funkcją obecną w kilku językach programowania, takich jak C/C ++, ADA i obiekt Pascal. Identyfikacja lub informacje typu czasu wykonania to funkcja, która identyfikuje i wyodrębnia informacje dotyczące szczegółów typu danych obiektu w czasie wykonywania programu. Ta funkcja zapewnia bezpieczną ścieżkę dla metod odlewania typu, takie jak funkcja „typeID” lub odlew dynamiczny. Wykrywa informacje o typach danych w czasie wykonywania i pomaga konwersji typu danych, gdy operatorzy są w grze.

Dynamiczne odlewanie jest wykorzystywane głównie w C ++ do sejfu w czasie wykonania. Aby pracować z dynamiczną obsadą, klasa podstawowa musi mieć 1 funkcję wirtualną. Dynamiczna obsada działa tylko z klasami podstawowymi polimorficznymi, ponieważ wykorzystuje te informacje do określenia bezpiecznego odlewu. Dynamiczny operator odlewu wykonuje dynamiczne odlewanie. Teraz, gdy wiemy o koncepcjach związanych z dynamicznym odlewem, możemy przejść do części implementacji. Najpierw spójrzmy na składnię do używania dynamicznego odlewania w języku programowania C ++, który jest napisany poniżej:

# „Dynamic_cast (wyrażenie)”

W powyższym wyrażeniu pierwsza część opisuje nazwę operatora; W nawiasach kątowych piszemy nazwę typu danych, który musimy przekonwertować nasze wyrażenie na okrągłe nawiasy, piszemy zmienną lub nazwę obiektu, którą chcemy przekonwertować.

Teraz, gdy wiemy, jak korzystać z dynamicznego operatora odlewu i wypełnić parametry konwersji typów danych zmiennych, możemy użyć go do konwersji typów danych zmiennych.

Używając metody dynamicznej odlewu w Ubuntu 20.04:

Aby wdrożyć tę koncepcję, musimy użyć kilku klas do pracy w celu przekształcenia obiektów klasy według dziedzictwa. Aby to zrobić, najpierw musimy wiedzieć, że plik programu C ++ w środowisku Ubuntu jest przechowywany z rozszerzeniem „.CPP ”, więc aby utworzyć ten plik na naszym pulpicie, otwórz terminal i wpisz„ CD Desktop ”na wierszu poleceń, a następnie naciśnij Enter i wpisz„ Touch Filename .CPP ”, aby utworzyć plik z„.rozszerzenie CPP ”. Teraz napiszemy kod w tym pliku, aby utworzyć klasę podstawową i 2 kody pochodne, aw kodzie sterownika użyjemy dynamicznego operatora odlewu.

Wyjdź z pliku po kliknięciu przycisku Zapisz. Wróć do terminalu i zbuduj plik za pomocą polecenia „G ++” z nazwą pliku i „.rozszerzenie CPP ”. Plik z rozszerzeniem „.out ”zostanie utworzone za pomocą tego polecenia. Możesz teraz uruchomić ten plik, wprowadzając „./”, A następnie twoje„.rozszerzenie ”.

W tym programie podstawowe wskaźniki przechowuje obiekty Klasa 1 klasy 1 (D1). Klasa bazowa dynamiczna, wskaźnik zachował obiekt pochodny1 i przydzielił go do klasy 1, która zapewniła prawidłowe odlewanie dynamiczne.

Wniosek:

W tym artykule nauczył nas metodę odlewania typu zastosowaną w języku programowania C ++. Rodzaj odlewania został również szczegółowo omówiony i skupiliśmy się na potrzebie tego, dlaczego używamy takich metod w programowaniu C ++. Omówiliśmy funkcję pomocy, która pomaga konwersji typu danych zmiennej, pobierając informacje i weryfikację prawidłowej konwersji o nazwie RTTI. Wdrożyliśmy również koncepcję odlewania dynamicznego za pomocą dynamicznego operatora odlewu w wyrażeniu w języku programowania C ++ w Ubuntu 20.04 Środowisko.