Ako implementovať volanie odkazom v C ++



Tento článok vám poskytne podrobnú znalosť funkcie Call by Reference v jazyku C ++ s implementáciami a toho, ako sa líši od Call by Value.

Práca s C ++ nie je náročná úloha, ak už máte základy v jazyku C, pretože obaja navzájom zdieľajú veľa konceptov. Avšak C ++ má niektoré koncepty, ktoré nie sú súčasťou paradigmy C. V tomto článku Call by Reference v C ++ si povieme o jednom takom koncepte, ktorým sú referenčné premenné a ich aplikácie v nasledujúcom poradí:

Referenčné premenné

C ++ nám dáva nový typ premennej, t. J. Referenčnú premennú. Referenčnú premennú si môžeme predstaviť ako prezývku pre našu pôvodnú premennú. To je presná funkčnosť referenčnej premennej v jednom riadku.





Ak sa napríklad voláte Harrison, ale doma, členovia vašej rodiny vás volajú Harry. Poďme si teraz prejsť niekoľko podrobností o referenčných premenných. Deklarácia a použitie tohto typu premennej sa líšia od bežných premenných, ktoré používame, ale veľmi sa podobajú premenným ukazovateľa.

Syntax:



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

Keď vytvoríme premennú „Hello“ obsahujúcu hodnotu „1“, použije sa segment pamäte na uloženie hodnoty „1“, názov tohto segmentu bude „Hello“ a adresa tohto segmentu bude napríklad nejaká hexadecimálna hodnota.0x64. keď píšemeint& Svet = ahojVytvorí sa premenná „svet“, ktorá smeruje k rovnakému umiestneniu pamäte.

Zahrnutie riadku World ++ spôsobí zmeny na adrese 0x64, to znamená, že sa zmení aj hodnota premennej „Hello“. Niektorí by mohli poukázať na to, ako to je referenčné premenné odlišné od premenných ukazovateľa, o ktorých budeme diskutovať v druhej časti tohto príspevku.

Call by Value a Call by Reference v C ++

Volať podľa hodnoty: Call by Value je široko používaná metóda. Väčšinou budete používať prístup podľa hodnoty, pretože nechcete, aby sa pôvodné hodnoty premenných menili. Preto sme na vyvolanie funkcie použili metódu call by value, odovzdali sa iba hodnoty premenných. To sa dosiahne vytvorením fiktívnych premenných v pamäti.



#include using namespace std void add (int a, int b) {a = a + 10 b = b + 10 cout<<'Value of a = '<  Výzva podľa hodnoty v C ++

Z vyššie uvedeného obrázka vidíme, že hneď ako zavoláme funkciu add (), hodnoty premenných xay sa skopírujú do premenných a a b. A a b sú fiktívne premenné.

Volať podľa referencie: Teraz si poďme povedať o hovore referenčnou metódou. V tejto metóde sa nevytvárajú samostatné atrapy premenných, metóde sa odovzdá odkaz na už existujúcu premennú. Tento odkaz odkazuje na to isté miesto v pamäti, preto sa v pamäti nevytvárajú samostatné kópie. Tu je dôležité poznamenať, že zmeny vykonané v referenčných premenných sa prejavia vo fiktívnej premennej.

#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 

Ako vidíme, vyššie uvedená funkcia vyzerá v porovnaní s normálnymi funkciami inak, pretože návratový typ je „int &“. Táto funkcia vracia odkaz na a alebo b v závislosti od podmienky. Tu je dôležité poznamenať, že hodnotysa nevracajú.

Ak funkciu zavoláme min (x, y) = 10. 10 bude priradených k x, ak je minimálna, alebo k y, ak je y minimálna.

Volať odkazom Vs Ukazovateľ

Vo všetkých našich príkladoch, ktoré sme videli, sme vždy priradili hodnotu referenčnej premennej, ktorú sme vytvorili, pretože referenčné premenné nemôžu mať hodnotu NULL, zatiaľ čo ukazovateľové premenné môžu mať hodnotu NULL a môžu spôsobiť neočakávané chyby.

Referenčné premenné nie je možné znova priradiť, zatiaľ čo ukazovatele môžu neskôr v programe ukazovať na inú premennú.

Premenná ukazovateľa obsahuje hodnotu adresy konkrétnej premennej, zatiaľ čo adresa referenčnej premennej je rovnaká ako adresa premennej, na ktorú odkazuje.

Týmto sa dostávame na koniec tohto článku Call By Reference v článku C ++. Dúfam, že ste pochopili rôzne implementácie výzvy spoločnosťou Value and reference a ako sa obidve líšia.

Ak sa chcete dozvedieť viac, pozrite si Edureka, dôveryhodná online vzdelávacia spoločnosť. Výcvikový a certifikačný kurz Edureka Java J2EE a SOA je navrhnutý tak, aby vás vyškolil na základné aj pokročilé koncepty Java spolu s rôznymi rámcami Java, ako je Hibernate & Spring.

Máte na nás otázku? Uveďte to prosím v sekcii komentárov tohto blogu a my sa vám ozveme čo najskôr.