C ++ STD Auto_PTR

C ++ STD Auto_PTR
Pekere er de som brukes til å få tilgang til ressursene som er eksternt for programmet samme som heapminnet. Når vi må få tilgang til minnehaugen, la oss anta at vi har en heltallverdi som er lagret i minneskuffen, vi kan få tilgang til det ved å bruke pekere. Noen ganger på grunn av bevisstløshet, blir ikke pekere forskjøvet, og det kan føre til minnelekkasje, eller det kan krasje hele programmet. For å forhindre denne situasjonen brukes smarte pekere, i denne mekanismen når objektet blir ødelagt, blir også minnet frigjort. Flere smarte pekere kan brukes, men i denne opplæringen vil vi diskutere bilpekeren.

Også bilpekeren er den smarte pekeren. Den tar en rå peker, pakker den inn og sikrer at minnet peker av råpekeren slippes tilbake når bilpekerobjektet går ut av omfanget, når som helst kan en bilpeker peke på et objekt. Derfor, når en bilpeker tildeles en annen bilpeker, blir eierskapet overført til Auto Pointer -forekomsten som har mottatt oppgaven. Det samme vil skje når en bilpeker kopieres.

Bilpekere er de samme som den unike pekeren, eller vi kan si at den unike pekeren er den nye versjonen av bilpekeren. Når objektet er deklarert ved hjelp av auto -pekeren, vil det lagre pekeren i et enkelt objekt som sikrer at når pekeren går ut av omfanget.

Syntaks

Syntaksen for å erklære en bilpeker er vist nedenfor:

STD :: AUTO_PTR P (ny int);

I syntaksen over "P" er Auto Pointer -objektet som vi har erklært hvor "typen" er datatypen som pekeren P vil inneholde. Og ved hjelp av det nye nøkkelordet har vi tildelt minnehaugen til heltallet som vi ønsker å lagre i det.

Eksempel # 01:

For å forstå arbeidet med bilpekeren i detalj, vil vi utføre et eksempel der vi vil erklære en bilpeker og vise minneplassen som den vil bli referert til på. La oss nå flytte til koden vår der hele prosessen vil bli utført fra opprettelsen til minnetildeling. Vi vil først inkludere vår overskriftsfil "iostream" og den andre "minnet". "Iostream" er bibliotekpakken som gjør det mulig for koderen å utføre forskjellige input-output-operasjoner. Mens "Memory" -biblioteket er det som innebærer å muliggjøre tildeling av minnehaugen. Utenfor hovedfunksjonen har vi erklært to objektklasser. Den første heter "Autopointer" som vil bli kalt ved hjelp av en bilpeker. Inne i "autopointer" -objektet opprettet vi en offentlig funksjon som heter "show ()".

Hensikten med å bruke det offentlige nøkkelordet i det er å gjøre det tilgjengelig for alle funksjonene i koden. I vår show () -funksjon har vi vist en melding av pekeroppretting, når pekeren opprettes for objektet "Autopointer" vil den vise meldingen. Den andre objektklassen heter "Autopointer2" som vi har laget for vår andre bilpeker som vi også passerte "cout" -uttalelsen ved å vise meldingen til "Second_PTR opprettet".

Nå, å flytte inn i hovedfunksjonen som returnerer heltallstypen. Vi erklærer først en bilpeker til et objekt av typen "autopointer" som heter "first_ptr". Ved å bruke det nye nøkkelordet, tildelte vi minnets haug til objektet "Autopointer" I neste linje i koden vår kalte vi showfunksjonen ved å bruke pekeren "First_PTR". I dette har vi brukt piloperatøren “->”, i C ++ lar det oss få tilgang til elementene fra objektene. De brukes med pekervariablene som peker på objektklassen. Når showfunksjonen kalles ved hjelp av “First_PTR”, vil den vise meldingen “First_PTR opprettet”, ved å bruke Get () -metoden som er gitt for å få minneplassen eller de lagrede dataene i en minneskuff. Men i vårt tilfelle vil vi få adressen hvor minnets haug hvor "first_ptr" blir tildelt.

Etter å ha vist "First_PTR" -stedet, oppretter vi en annen bilpeker som heter "Second_PTR" av objekttypen "Autopointer2". Igjen, ved å bruke den nye pekeren, har vi reservert minneplassen for den. Nå, som flytter til neste linje, bruker vi “Second_PTR” vi kalte “show ()” -funksjonen som vi har laget for “Autopointer2” -objektet. En ting å huske er når vi erklærer en bilpeker for et objekt, det vil få funksjonen til klasseobjektet som vi har opprettet pekeren. Det vil ikke få funksjonen til den andre objektklassen om de har samme navn. Som i vårt tilfelle i begge objektklasser, har vi laget de samme funksjonene som heter “Show ()”. Etter det, ved hjelp av get () -metoden, fikk vi tilgang til minnets haug ved å bruke “Second_PTR” der den andre pekeren “Second_PTR” er lagret. På slutten av koden har vi returnert nullverdien, noe som betyr at programmet vil bli utført med hell uten å ha noen feil og vil utføre den ønskede oppgaven det er ment å.

#inkludere
#inkludere
ved hjelp av navneområdet STD;
klasse autopointer
offentlig:
void show () cout<< "first_Ptr created" <;
klasse autopointer2
offentlig:
void show () cout<< "second_Ptr created" <;
int main ()

auto_ptrfirst_ptr (ny autopointer);
First_Ptr-> show ();
cout<Auto_PTRSecond_PTR (New Autopointer2);
Second_Ptr-> show ();
cout<retur 0;

La oss nå sjekke utdataene vi har oppnådd som et resultat av koden vi har skrevet som vises i utdraget ovenfor. Som vi kan se i denne utgangen, har vi vist meldingen om pekeroppretting for begge våre bilpekere. Minneplassen for begge pekere er vist uten feil.

Konklusjon

I denne opplæringen har vi demonstrert den interne oppførselen til bilpekeren. Auto -pekeren ble introdusert i C ++ 3. Ved å bruke eksempler og scenarier forklarte vi det kort for å gjøre det enkelt å forstå arbeid og metodikk for hvordan den brukes. Bilpekere er utdatert på grunn av deres eierskap. Det får eierskap på en måte som to tips samtidig ikke kan ha samme objekt.