C ++ Reinterprets_cast

C ++ Reinterprets_cast
En peker blir alltid returnert av reinterpret_cast. Reinterpret_cast kan utføre den uriktige tingen og har en tendens til å gjøre passende modifisering til pekeren hvis B har mye mer enn en abstrakt klasse og A ikke er den første abstrakte klassen.

Returtype av reinterpret_cast

Det er ingen returtype for det. Pekertypen konverteres bare.

Parametere for reinterpret_cast

Referansepekervariabelen er det eneste argumentet den godtar.

Bruk av reinterpret_cast

    • Casting -operatøren reinterpret_cast er en unik og problematisk. Det anbefales å bruke den med riktig datatype.
    • Enhver peker blir en typecast for en annen datatype.
    • Det brukes mens du jobber med biter.
    • Hvis vi bruker reinterpret_cast, mangler produktet sin portabilitet. Det anbefales å ikke bruke denne forestillingen med mindre den er strengt viktig.
    • Det er utelukkende ansatt for å typekastere en hvilken som helst peker tilbake til sin virkelige type.
    • Den boolske verdien transformeres til et binært tall.

La oss snakke mer om C ++ tolkningen.

Eksempel 1:

I dette eksemplet vil vi vise hvordan reinterpret_cast fungerer på sitt mest grunnleggende nivå.

#inkludere
ved hjelp av navneområdet STD;
int main ()

int* a = ny int (90);
char* chr = reinterpret_cast(en);
cout << *a << endl;
cout << *chr << endl;
cout << a << endl;
cout << chr << endl;
retur 0;



Vi starter koden ved å integrere overskriftsfilen . Standard navneområdet brukes i neste trinn. Vi definerer hovedfunksjonen (). Innenfor funksjonen konstruerer vi en peker. Sammen med dette initialiserer vi en variabel og gir en verdi av denne pekeren.

Deretter erklærer vi en peker av karakterdatatypen. Vi bruker kommandoen reinterpret_cast. Her passerer vi karakterpekeren. Videre bruker vi COUT -setningen først til å skrive ut variabel pekeren så vel som karakterpekeren. Deretter bruker vi cout -setningen for å vise verdiene til begge pekere. Til slutt bruker vi retur 0 -kommandoen.

Eksempel 2:

Denne koden demonstrerer hvordan du bruker strukturen som illustrasjon.

#inkludere
ved hjelp av navneområdet STD;
struct myStruct
int jeg;
int j;
char m;
bool n;
;
int main ()

myStruct e;
e.i = 25;
e.J = 40;
e.m = 'u';
e.n = sant;
int* ptr = reinterpret_cast(& e);
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));
retur 0;



Biblioteket og standard navneområdet brukes ved begynnelsen av koden. Vi lager en struktur som kalles mystruct. Innenfor denne strukturen initialiserer vi to variabler som heter I og J. Deretter lager vi to andre variabler som den første variabelen har en tegndatatype, og den andre variabelen har en boolsk datatype. I det senere trinnet bruker vi Main () -funksjonen. Inne i denne funksjonen kaller vi en variabel "e" av strukturen "mystruct".

Deretter tildeler vi noen tilfeldige verdier til variabelen tilknyttet strukturen. De to første variablene inneholder heltallverdiene. Den tredje variabelen inneholder tegnet. Den siste variabelen inneholder den boolske verdien. Under støping er datatypen til variabelen den samme som for den virkelige variabelen. Nå konverterer vi pekeren til “E” til pekeren til variabelen som har heltalldatatypen. Vi konstruerer pekeren og setter verdien lik reinterpret_cast. Deretter bruker vi cout -uttalelsen. Vi øker verdien av pekeren “PTR” med 1. Nå skriver vi ut verdien til neste peker, så vi bruker cout -setningen igjen.

I tillegg heves denne pekerens verdi med 1. Vi bruker rollebesetningen på pekeren til karakteren “Chr” ved bruk av reinterpret_cast. Nå, bare vis verdien av karakterpekeren ved hjelp av cout -uttalelsen. Ettersom *CHR allerede tilsvarer en boolsk verdi, brukes en lignende datatype -transformasjon for å oppnå verdien. Dermed bruker vi datatypen *B, som er en bool. Vi bruker reinterpret_cast for den boolske pekeren. Vi skriver ut verdien til den boolske variabelen ved å bruke cout -setningen. Reinterpret_cast er ansatt for å vise verdien som er pekt av *Chr. For å avslutte koden, bruk Return 0 -setningen.

Eksempel 3:

Pekeren omfortolket er demonstrert i dette tilfellet.

#inkludere
ved hjelp av navneområdet STD;
klasse u
offentlig:
void Fun_x ()

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

;
Klasse V
offentlig:
void Fun_B ()

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

;
int main ()

V* i = new V ();
V* new_x = reinterpret_cast(Jeg);
new_x-> fun_x ();
retur 0;



Først av alt introduserer vi modulen og standard navneområdet. Deretter konstruerer vi en klasse som heter u. Vi definerer en funksjon av denne klassen offentlig. Vi bruker cout -kommandoen innen denne funksjonen. Deretter lager vi en ny klasse som heter V. Etter å ha ringt funksjonen, gjør vi det offentlig. Her brukes cout -uttalelsen. Vi starter kodingen inne i Main () -metoden. Først konstruerer vi objektet “jeg” i klasse V. Vi forvandler pekeren til objektet og gir referansen til klasse V til klasse U, så vi bruker reinterpret_cast. Deretter henter vi funksjonen “FUN_X” i klasse U. Bruk deretter retur 0 -kommandoen for å avslutte programmet.

Konklusjon

Vi diskuterte C ++ reinterpret_cast i denne artikkelen. Det er en støpegruppe som heter reinterpret_cast i C++. Uansett om klassene er koblet eller ikke, brukes den til å transformere en peker av en datatype til en annen peker. Vi evaluerte tre eksempler, og i en av dem kan vi se hvordan vi bruker reinterpret_cast opererer i sin mest grunnleggende form. I det andre eksemplet bruker vi en struktur og bruker deretter reinterpret_cast for å endre pekeren til en annen peker. Den siste illustrasjonen viser en peker på nytt.