Hur man implementerar samtal med referens i C ++



Den här artikeln ger dig en detaljerad kunskap om Call by Reference i C ++ med Implementations och hur den skiljer sig från Call by Value.

Att arbeta med C ++ är inte en svår uppgift om du redan har en bakgrund i C eftersom båda delar massor av koncept med varandra. Men C ++ har några begrepp som inte är en del av C-paradigmet. I den här referensanropet i C ++ - artikeln kommer vi att prata om ett sådant koncept som är referensvariabler och dess tillämpningar i följande ordning:

Referensvariabler

C ++ ger oss en ny typ av variabel, dvs en referensvariabel. Vi kan tänka på en referensvariabel som ett smeknamn för vår ursprungliga variabel. Det är det som är den exakta funktionen hos en referensvariabel i en rad.





Om du till exempel heter Harrison men hemma kallar dina familjemedlemmar dig Harry. Låt oss nu gå igenom några detaljer om referensvariabler. Deklarationen och användningen av denna typ av variabel skiljer sig från de vanliga variablerna vi använder men liknar mycket pekvariablerna.

Syntax:



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

När vi skapar en variabel 'Hello' som innehåller värdet '1' används ett minnessegment för att såra värdet '1', namnet på detta segment kommer att vara 'Hello' och adressen till detta segment kommer att vara något hex-värde till exempel0x64. när vi skriverint& Värld = Hej'World' -variabel skapas som pekar mot samma minnesplats.

Inklusive linjen World ++ kommer att göra ändringar i adressen 0x64, vilket betyder att värdet på variabeln 'Hello' också kommer att ändras. Vissa kan påpeka att hur är referensvariabler som skiljer sig från pekervariablerna som vi kommer att diskutera i den senare delen av detta inlägg.

Call by Value och Call by Reference i C ++

Samtal efter värde: Call by Value är en mycket använd metod. De flesta gånger använder du metoden för samtal efter värde eftersom du inte vill att dina ursprungliga värden för variablerna ska ändras. Därför använde vi metoden call by value för att anropa en funktion, endast värdena för variablerna skickas. Detta uppnås genom att skapa dummyvariabler i minnet.



#include using namespace std void add (int a, int b) {a = a + 10 b = b + 10 cout<<'Value of a = '<  Ring efter värde i C ++

Från bilden ovan kan vi se att så snart vi kallar add () -funktionen kopieras värdena på x- och y-variablerna till variablerna a och b. A och b är dummyvariabler.

Ring efter referens: Låt oss nu prata om samtalet med referensmetod. I denna metod skapas inte separata dummyvariabler, en referens till en redan existerande variabel skickas till metoden. Denna referens pekar på samma minnesplats och därför görs inga separata kopior i minnet. Den viktiga punkten att notera här är att ändringarna i referensvariablerna återspeglas i dummyvariabeln.

#include using namespace 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 att ovanstående funktion ser annorlunda ut jämfört med normala funktioner eftersom returtypen är 'int &'. Denna funktion returnerar en referens till a eller b beroende på tillståndet. Den viktiga punkten att notera här är att värdenareturneras inte.

Om vi ​​kallar funktionen min (x, y) = 10. 10 kommer att tilldelas x om det är minimum eller till y om y är minimum.

Call by Reference Vs Pointer

I alla våra exempel såg vi att vi alltid tilldelade ett värde till referensvariabeln vi skapade eftersom referensvariablerna inte kan vara NULL medan pekvariablerna kan vara NULL och kan orsaka oväntade fel.

Referensvariabler kan inte omfördelas medan pekervariabler kan peka på någon annan variabel senare i programmet.

En pekervariabel innehåller adressvärdet för en viss variabel medan adressen för referensvariabeln är densamma som den för den variabel som den hänvisar till.

Med detta kommer vi till ett slut på denna Call By Reference i C ++ - artikeln. Jag hoppas att du fick en förståelse för de olika genomförandena av samtalet efter värde och referens och hur de båda skiljer sig åt.

Om du vill veta mer, kolla in av Edureka, ett pålitligt inlärningsföretag online. Edurekas Java J2EE- och SOA-utbildning och certifieringskurs är utformad för att träna dig för både grundläggande och avancerade Java-koncept tillsammans med olika Java-ramverk som Hibernate & Spring.

Har du en fråga till oss? Vänligen nämna det i kommentarsektionen på den här bloggen så kommer vi tillbaka till dig så snart som möjligt.