C ++ Reinterpret_cast

C ++ Reinterpret_cast
Wskaźnik jest zawsze zwracany przez reinterpret_cast. Reinterpret_cast może wykonać niepoprawną rzecz i ma tendencję do dokonywania odpowiedniej modyfikacji wskaźnika, jeśli B ma znacznie więcej niż klasa abstrakcyjna, a A nie jest pierwszą klasą abstrakcyjną.

Typ zwrotu reinterpret_cast

Nie ma dla niego typu powrotu. Typ wskaźnika jest konwertowany tylko.

Parametry reinterpret_cast

Zmienna wskaźnika odniesienia jest jedynym argumentem, który akceptuje.

Użycie reinterpret_cast

    • Reinterpret_cast operator castingowy jest unikalny i problematyczny. Zaleca się wykorzystanie go z odpowiednim typem danych.
    • Każdy wskaźnik staje się typem do innego typu danych.
    • Jest wykorzystywany podczas pracy z bitami.
    • Jeśli skorzystamy z reinterpret_cast, produktowi brakuje jego przenośności. Zaleca się, aby nie stosować tego pojęcia, chyba że jest to ściśle niezbędne.
    • Jest zatrudniony wyłącznie do typowego wskaźnika z powrotem do jego prawdziwego typu.
    • Wartość logiczna jest przekształcana w liczbę binarną.

Porozmawiajmy więcej o interpretacji C ++.

Przykład 1:

W tym przykładzie pokażemy, jak funkcjonuje reinterpret_cast na swoim najbardziej podstawowym poziomie.

#włączać
za pomocą przestrzeni nazw Std;
int main ()

int* a = new int (90);
char* chr = reinterpret_cast(A);
Cout << *a << endl;
Cout << *chr << endl;
Cout << a << endl;
Cout << chr << endl;
powrót 0;



Rozpoczynamy kod poprzez zintegrowanie pliku nagłówka . Standardowa przestrzeń nazw jest używana w następnym kroku. Definiujemy funkcję Main (). W ramach funkcji konstruujemy wskaźnik. Wraz z tym inicjujemy zmienną i podajemy wartość tego wskaźnika.

Następnie deklarujemy wskaźnik typu danych znaków. Używamy polecenia reinterpret_cast. Tutaj przekazujemy wskaźnik postaci. Ponadto najpierw wykorzystujemy instrukcję Cout, aby wydrukować wskaźnik zmienny, a także wskaźnik postaci. Następnie stosujemy instrukcję Cout, aby wyświetlić wartości obu wskazówek. W końcu stosujemy polecenie return 0.

Przykład 2:

Ten kod pokazuje, jak wykorzystać strukturę jako ilustrację.

#włączać
za pomocą przestrzeni nazw Std;
struct myStruct
int i;
int J;
czar;
bool n;
;
int main ()

Mystruct e;
mi.i = 25;
mi.J = 40;
mi.m = „u”;
mi.n = prawda;
int* ptr = reinterpret_cast(&mi);
Cout << sizeof (e) << endl;
Cout << *ptr << endl;
ptr ++;
Cout << *ptr << endl;
ptr ++;
char* chr = reinterpret_cast(ptr);
Cout << *chr << endl;
CHR ++;
bool* b = reinterpret_cast(CHR);
Cout << *b << endl;
Cout << *(reinterpret_cast(chr));
powrót 0;



Biblioteka i standardowe przestrzeń nazw są używane na początku kodu. Tworzymy strukturę zwaną prymstruktami. W tej strukturze inicjujemy dwie zmienne o nazwie I i J. Następnie tworzymy dwie inne zmienne, z których pierwsza zmienna ma typ danych znakowych, a druga zmienna ma boolean typu danych. W późniejszym kroku używamy funkcji Main (). W tej funkcji nazywamy zmienną „e” struktury „Mystruct”.

Następnie przypisujemy niektóre losowe wartości do zmiennej powiązanej ze strukturą. Pierwsze dwie zmienne zawierają wartości liczb całkowitych. Trzecia zmienna zawiera znak. Ostatnia zmienna zawiera wartość logiczną. Podczas odlewania typ danych zmiennej jest taki sam jak w przypadku zmiennej rzeczywistej. Teraz konwertujemy wskaźnik „E” na wskaźnik zmiennej o typach danych liczb całkowitych. Konstruujemy wskaźnik i ustawiamy jego wartość równą do reinterpret_cast. Następnie wykorzystujemy oświadczenie Cout. Zwiększamy wartość wskaźnika „PTR” o 1. Teraz drukujemy wartość następnego wskaźnika, więc ponownie zastosujemy instrukcję Cout.

Dodatkowo wartość tego wskaźnika jest podniesiona o 1. Zastosujemy casting do wskaźnika postaci „CHR” za pomocą reinterpret_cast. Teraz po prostu pokaż wartość wskaźnika postaci za pomocą instrukcji Cout. Ponieważ *CHR już odpowiada wartości logicznej, zastosowana jest podobna transformacja typu danych, aby uzyskać wartość. W ten sposób używamy typu danych *B, który jest bool. Korzystamy z reinterpret_cast dla wskaźnika logicznego. Drukujemy wartość tej zmiennej logicznej, stosując instrukcję Cout. Reinterpret_cast jest stosowany do wyświetlania wartości wskazanej przez *CHR. Aby zakończyć kod, użyj instrukcji return 0.

Przykład 3:

Reinterpret wskaźnika został wykazany w tym przypadku.

#włączać
za pomocą przestrzeni nazw Std;
klasa u
publiczny:
void fun_x ()

Cout << " Present in class U\n";

;
klasa V
publiczny:
void fun_b ()

Cout << " Present in class V\n";

;
int main ()

V* i = new V ();
V* new_x = reinterpret_cast(I);
new_x-> fun_x ();
powrót 0;



Przede wszystkim wprowadzamy moduł i standardowy przestrzeń nazw. Następnie konstruujemy klasę o imieniu u. Publicznie definiujemy funkcję tej klasy. Korzystamy z polecenia Cout w tej funkcji. Następnie tworzymy nową klasę o nazwie v. Po wywołaniu funkcji, upubliczniamy. Tutaj używana jest instrukcja Cout. Rozpoczynamy kodowanie wewnątrz metody Main (). Najpierw konstruujemy obiekt „i” klasy V. Przekształcamy wskaźnik w obiekt i podajemy odniesienie klasy V do klasy U, więc używamy reinterpret_cast. Następnie odzyskujemy funkcję „FUN_X” klasy U. Następnie zastosuj polecenie zwrotu 0, aby zakończyć program.

Wniosek

W tym artykule omówiliśmy C ++ Reinterpret_cast. Istnieje operator odlecia o nazwie reinterpret_cast w c++. Bez względu na to, czy zajęcia są połączone, czy nie, są wykorzystywane do przekształcenia jednego wskaźnika jednego typu danych w inny wskaźnik. Oceniliśmy trzy przykłady i w jednym z nich możemy zobaczyć, jak korzystać z reinterpret_cast działa w najbardziej podstawowej formie. W drugim przykładzie używamy struktury, a następnie używamy reinterpret_cast, aby zmienić wskaźnik na inny wskaźnik. Ostatnia ilustracja pokazuje reinterpret wskaźnika.