Hvordan implementere samtale ved referanse i C ++



Denne artikkelen vil gi deg en detaljert kunnskap om Call by Reference i C ++ med Implementations og hvordan den skiller seg fra Call by Value.

Å jobbe med C ++ er ikke en vanskelig oppgave hvis du allerede har en bakgrunn i C, da begge deler mange konsepter med hverandre. Men C ++ har noen begreper som ikke er en del av C-paradigmet. I denne referansen i C ++ -artikkelen vil vi snakke om et slikt konsept som er referansevariabler og dets applikasjoner i følgende rekkefølge:

Referansevariabler

C ++ gir oss en ny type variabel, dvs. en referansevariabel. Vi kan tenke på en referansevariabel som et kallenavn for vår opprinnelige variabel. Det er det som er den eksakte funksjonaliteten til en referansevariabel i en linje.





Hvis du for eksempel heter Harrison, men hjemme, kaller familiemedlemmene deg Harry. La oss nå gå gjennom noen detaljer om referansevariabler. Erklæringen og bruken av denne typen variabler er forskjellig fra de vanlige variablene vi bruker, men ligner veldig på pekervariablene.

Syntaks:



int Hello = 1 int * ptr int & World = Hello

Når vi oppretter en variabel 'Hallo' som inneholder verdien '1', brukes et minnesegment til å sore verdien '1'. Navnet på dette segmentet vil være 'Hei' og adressen til dette segmentet vil være noen hexverdi for eksempel0x64. når vi skriverint& Verden = Hei'World' -variabelen opprettes som peker mot samme minneplassering.

Inkludert linjen World ++ vil gjøre endringer i adressen 0x64, dette betyr at verdien til variabelen 'Hello' også vil endres. Noen kan påpeke at hvordan er referansevariabler som er forskjellige fra pekervariablene som vi skal diskutere i siste del av dette innlegget.

Ring etter verdi og Ring etter referanse i C ++

Ring etter verdi: Call by Value er en mye brukt metode. De fleste ganger bruker du tilnærmingen med anrop etter verdi, da du ikke vil at de opprinnelige verdiene til variablene skal endres. Derfor brukte vi metoden for å ringe etter verdi for å kalle en funksjon, bare verdiene til variablene sendes. Dette oppnås ved å lage dummyvariabler i minnet.



# inkludere bruk av navneområde std void add (int a, int b) {a = a + 10 b = b + 10 cout<<'Value of a = '<  Ring etter verdi i C ++

Fra bildet ovenfor kan vi se at så snart vi kaller add () -funksjonen, blir verdiene til x- og y-variablene kopiert til variablene a og b. A og b er dummyvariabler.

Ring etter referanse: La oss nå snakke om samtalen etter referansemetode. I denne metoden opprettes ikke separate dummyvariabler, en referanse til en allerede eksisterende variabel sendes til metoden. Denne referansen peker på samme minneplassering, og det blir derfor ikke laget separate kopier i minnet. Det viktige punktet å merke seg her er at endringene som er gjort i referansevariablene gjenspeiles i dummyvariabelen.

# inkludere bruk av navneområde std void add (int & a, int & b) {a = a + 10 b = b + 10 cout<<'Value of a = '< int & min (int & a, int & b) {if (a 

Som vi kan se at funksjonen ovenfor ser annerledes ut sammenlignet med normale funksjoner siden returtypen er ‘int &’. Denne funksjonen returnerer en referanse til a eller b, avhengig av tilstanden. Det viktige poenget å merke seg her er at verdieneblir ikke returnert.

Hvis vi kaller funksjonen min (x, y) = 10. 10 vil bli tildelt x hvis det er minimum eller til y hvis y er minimum.

Call by Reference Vs Pointer

I alle eksemplene vi så, tildelte vi alltid en verdi til referansevariabelen vi opprettet, siden referansevariablene ikke kan være NULL mens pekervariablene kan være NULL og kan forårsake uventede feil.

hadoop utviklerroller og ansvar

Referansevariabler kan ikke tildeles på nytt mens pekervariabler kan peke på en annen variabel senere i programmet.

En pekervariabel inneholder adresseverdien til en bestemt variabel, mens adressen til referansevariabelen er den samme som for variabelen den henviser til.

Med dette kommer vi til en slutt på denne Call By Reference i C ++ - artikkelen. Jeg håper du har fått en forståelse av den ulike implementeringen av samtalen etter verdi og referanse og hvordan de begge er forskjellige.

Hvis du ønsker å lære mer, sjekk ut av Edureka, et pålitelig online læringsfirma. Edurekas Java J2EE- og SOA-opplærings- og sertifiseringskurs er designet for å trene deg for både kjerne- og avanserte Java-konsepter sammen med forskjellige Java-rammer som Hibernate & Spring.

Har du et spørsmål til oss? Vennligst nevn det i kommentarfeltet på denne bloggen, så kommer vi tilbake til deg så snart som mulig.