Hoe Call by Reference in C ++ te implementeren



Dit artikel geeft je gedetailleerde kennis van Call by Reference in C ++ met implementaties en hoe het verschilt van Call by Value.

Werken met C ++ is geen moeilijke taak als je al een achtergrond in C hebt, omdat ze allebei heel veel concepten met elkaar delen. Maar C ++ heeft een aantal concepten die geen deel uitmaken van het C-paradigma. In dit artikel Call by Reference in C ++ zullen we het hebben over een dergelijk concept, namelijk referentievariabelen en de toepassingen ervan in de volgende volgorde:

Referentievariabelen

C ++ geeft ons een nieuw type variabele, dat wil zeggen een referentievariabele. We kunnen een referentievariabele zien als een bijnaam voor onze oorspronkelijke variabele. Dat is het, dat is de exacte functionaliteit van een referentievariabele op één regel.





Als uw naam bijvoorbeeld Harrison is, maar thuis, noemen uw gezinsleden u Harry. Laten we nu wat details van referentievariabelen bekijken. De declaratie en het gebruik van dit type variabele verschillen van de gebruikelijke variabelen die we gebruiken, maar lijken sterk op de pointervariabelen.

Syntaxis:



hoe string in python om te keren
int Hallo = 1 int * ptr int & World = Hallo

Wanneer we een variabele ‘Hallo’ maken met de waarde ‘1’, wordt een geheugensegment gebruikt om de waarde ‘1’ te beschadigen. De naam van dit segment is ‘Hallo’ en het adres van dit segment is bijvoorbeeld een hexadecimale waarde0x64. wanneer we schrijvenint& World = HalloEr wordt een ‘World’ -variabele gemaakt die naar dezelfde geheugenlocatie verwijst.

Door de regel World ++ op te nemen, worden wijzigingen aangebracht in adres 0x64, dit betekent dat de waarde van variabele ‘Hallo’ ook zal veranderen. Sommigen zullen erop wijzen dat hoe het is referentievariabelen die verschillen van de aanwijzervariabelen die we in het laatste deel van dit bericht zullen bespreken.

Call by Value en Call by Reference in C ++

Oproep op waarde: Call by Value is een veelgebruikte methode. Meestal zult u de call by value-benadering gebruiken, omdat u niet wilt dat uw oorspronkelijke waarden van de variabelen worden gewijzigd. Daarom hebben we de methode call by value gebruikt om een ​​functie aan te roepen, alleen de waarden van de variabelen worden doorgegeven. Dit wordt bereikt door dummy-variabelen in het geheugen te creëren.



#include gebruik naamruimte std void add (int a, int b) {a = a + 10 b = b + 10 cout<<'Value of a = '<  Oproep op waarde in C ++

Uit de bovenstaande afbeelding kunnen we zien dat zodra we de functie add () aanroepen, de waarden van x- en y-variabelen worden gekopieerd naar variabelen a en b. A en b zijn dummy-variabelen.

Bel via referentie: Laten we het nu hebben over de oproep via referentiemethode. Bij deze methode worden geen aparte dummy-variabelen gemaakt, er wordt een verwijzing naar een reeds bestaande variabele doorgegeven aan de methode. Deze verwijzing verwijst naar dezelfde geheugenlocatie en daarom worden er geen afzonderlijke kopieën in het geheugen gemaakt. Het belangrijke punt om hier op te merken is dat de wijzigingen die in de referentievariabelen zijn aangebracht, worden weerspiegeld in de dummy-variabele.

#include met gebruik van naamruimte 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 

Zoals we kunnen zien, ziet de bovenstaande functie er anders uit dan normale functies, aangezien het retourtype ‘int &’ is. Deze functie retourneert een verwijzing naar a of b, afhankelijk van de conditie. Het belangrijke punt om hier op te merken is dat de waardenworden niet geretourneerd.

Als we de functie min (x, y) = 10 aanroepen, wordt 10 toegewezen aan x als het minimum is of aan y als y het minimum is.

Bellen met referentie versus aanwijzer

In al onze voorbeelden hebben we gezien dat we altijd een waarde hebben toegewezen aan de referentievariabele die we hebben gemaakt, aangezien de referentievariabelen niet NULL kunnen zijn, terwijl pointervariabelen NULL kunnen zijn en onverwachte fouten kunnen veroorzaken.

hoe de split-methode in java te gebruiken

Referentievariabelen kunnen niet opnieuw worden toegewezen, terwijl pointervariabelen later in het programma naar een andere variabele kunnen verwijzen.

Een pointervariabele bevat de adreswaarde van een bepaalde variabele, terwijl het adres van de referentievariabele hetzelfde is als dat van de variabele waarnaar deze verwijst.

Hiermee komen we aan het einde van dit Call By Reference in C ++ -artikel. Ik hoop dat je inzicht hebt gekregen in de verschillende implementaties van de oproep door Waarde en referentie en hoe ze beide verschillen.

Als je meer wilt weten, bekijk dan de door Edureka, een vertrouwd online leerbedrijf. Edureka's Java J2EE- en SOA-trainings- en certificeringscursus is ontworpen om u te trainen in zowel kern- als geavanceerde Java-concepten, samen met verschillende Java-frameworks zoals Hibernate & Spring.

Heeft u een vraag voor ons? Vermeld het in het opmerkingengedeelte van deze blog en we nemen zo snel mogelijk contact met je op.