Rad s C ++-om nije težak zadatak ako već imate pozadinu u C-u jer obojica međusobno dijele tone koncepata. Ali, C ++ ima neke koncepte koji nisu dio C paradigme. U ovom članku Poziv putem reference u C ++-u govorit ćemo o jednom takvom konceptu koji je referentne varijable i njegove primjene sljedećim redoslijedom:
- Referentne varijable
- Poziv po vrijednosti i poziv po referenci u jeziku C ++
- Povratak referencom u C ++
- Poziv referencom Vs Pointer
Referentne varijable
C ++ nam daje novu vrstu varijable, tj. Referentnu varijablu. Referentnu varijablu možemo smatrati nadimkom izvorne varijable. To je to što je točna funkcionalnost referentne varijable u jednom retku.
java dobivanje datuma iz niza
Na primjer, ako se zovete Harrison, ali kod kuće, članovi vaše obitelji zovu vas Harry. Sada ćemo proći kroz neke detalje referentnih varijabli. Deklaracija i upotreba ove vrste varijable razlikuju se od uobičajenih varijabli koje koristimo, ali vrlo slične pokazivačkim varijablama.
Sintaksa:
int Pozdrav = 1 int * ptr int & Svijet = Pozdrav
Kada kreiramo varijablu 'Hello' koja sadrži vrijednost '1', segment memorije koristi se za ranjavanje vrijednosti '1', naziv ovog segmenta bit će 'Hello', a adresa ovog segmenta bit će neka heksadecimalna vrijednost0x64. kad pišemoint& Svijet = Pozdrav
Stvara se varijabla ‘Svijet’ koja upućuje na isto memorijsko mjesto.
Uključivanje retka World ++ izvršit će promjene na adresi 0x64, što znači da će se i vrijednost varijable 'Hello' promijeniti. Neki bi mogli istaknuti kako su referentne varijable različite od pokazivačkih varijabli o kojima ćemo raspravljati u drugom dijelu ovog posta.
Poziv po vrijednosti i poziv po referenci u jeziku C ++
Nazovite po vrijednosti: Call by Value je široko korištena metoda. Većinu puta ćete koristiti pristup pozivom prema vrijednosti jer ne želite da se mijenjaju vaše izvorne vrijednosti varijabli. Stoga smo koristili metodu poziva vrijednošću za pozivanje funkcije, prenose se samo vrijednosti varijabli. To se postiže stvaranjem lažnih varijabli u memoriji.
#include using space names std void add (int a, int b) {a = a + 10 b = b + 10 cout<<'Value of a = '<Iz gornje slike možemo vidjeti da čim pozovemo funkciju add () vrijednosti varijabli x i y kopiraju se u varijable a i b. A i b su lažne varijable.
Nazovite putem reference: Sada, razgovarajmo o pozivu referentnom metodom. U ovoj metodi ne stvaraju se zasebne lažne varijable, referenca već postojeće varijable prenosi se na metodu. Ova referenca upućuje na isto mjesto memorije, pa se u memoriji ne prave zasebne kopije. Ovdje je važno napomenuti da se promjene u referentnim varijablama odražavaju u lažnoj varijabli.
#include using space names std void add (int & a, int & b) {a = a + 10 b = b + 10 cout<<'Value of a = '< int & min (int & a, int & b) {if (aKao što možemo vidjeti da gornja funkcija izgleda drugačije u usporedbi s normalnim funkcijama, jer je tip povrata 'int &'. Ova funkcija vraća referencu na a ili b, ovisno o stanju. Ovdje je važno napomenuti da su vrijednostise ne vraćaju.
Ako pozovemo funkciju min (x, y) = 10. 10 će se dodijeliti x ako je minimalna ili y ako je y minimalna.
Poziv referencom Vs Pointer
U svim našim primjerima koje smo vidjeli uvijek smo dodijelili vrijednost referentnoj varijabli koju smo stvorili jer referentne varijable ne mogu biti NULL, dok varijable pokazivača mogu biti NULL i mogu uzrokovati neočekivane pogreške.
Referentne varijable ne mogu se dodijeliti dok varijable pokazivača mogu usmjeravati na neku drugu varijablu kasnije u programu.
Varijabla pokazivača sadrži vrijednost adrese određene varijable, dok je adresa referentne varijable jednaka onoj varijable na koju se odnosi.
Ovim smo došli do kraja ovog poziva pozivanjem u članku na C ++. Nadam se da ste razumjeli različite provedbe poziva pomoću vrijednosti i reference i kako se oboje razlikuju.
Ako želite saznati više, pogledajte Edureka, pouzdane tvrtke za internetsko učenje. Edurekin tečaj za obuku i certificiranje Java J2EE i SOA osmišljen je kako bi vas osposobio za osnovne i napredne Java koncepte zajedno s raznim Java okvirima poput Hibernate & Spring.
Imate pitanje za nas? Molimo vas da ga spominjete u odjeljku za komentare ovog bloga i javit ćemo vam se što je prije moguće.