Hogyan lehet a Call-t referencia útján megvalósítani a C ++ nyelven



Ez a cikk részletesen ismerteti a C ++ és a megvalósítások közötti referenciahívást és a különbséget az érték szerinti hívástól.

A C ++ alkalmazással végzett munka nem nehéz feladat, ha már van háttere C-ben, mivel mindketten rengeteg fogalmat osztanak meg egymással. De a C ++ -nak vannak olyan fogalmai, amelyek nem részei a C-paradigmának. Ebben a C ++ cikkben szereplő referencia-felhívásban egy ilyen fogalomról beszélünk, amely a referenciaváltozók és alkalmazásai a következő sorrendben:

Referencia-változók

A C ++ új típusú változót ad, azaz referencia változót. Gondolhatunk egy referencia változóra, mint becenévre az eredeti változónk számára. Ez az, ami egy referencia változó pontos működése egy sorban.





Például, ha a neve Harrison, de otthon van, a családtagjai Harrynek hívnak. Most nézzük át a referenciaváltozók néhány részletét. Az ilyen típusú változó deklarálása és használata eltér az általunk használt szokásos változóktól, de nagyon hasonló a mutatóváltozókhoz.

Szintaxis:



c ++ tárolási osztály
int Hello = 1 int * ptr int & World = Hello

Amikor létrehozunk egy „Hello” változót, amely tartalmazza az „1” értéket, egy memóriaszegmenst használnak az „1” érték elszívására, ennek a szegmensnek a neve „Hello” lesz, és ennek a szegmensnek a címe például hex érték lesz.0x64. amikor írunkint& Világ = HellóLétrejön a „világ” változó, amely ugyanazon memóriahely felé mutat.

A World ++ sor felvétele megváltoztatja a 0x64 címet, ez azt jelenti, hogy a „Hello” változó értéke is megváltozik. Néhányan rámutathatnak arra, hogy van referenciaváltozók, amelyek eltérnek a mutatóváltozóktól, amelyeket a bejegyzés második részében fogunk megvitatni.

Hívás érték és Hívás referencia szerint C ++ nyelven

Hívás érték szerint: Az érték szerinti hívás széles körben alkalmazott módszer. Legtöbbször a hívás érték szerint megközelítést használja, mivel nem akarja, hogy a változók eredeti értékei megváltozzanak. Ezért a hívás érték szerint metódust alkalmaztuk egy függvény meghívására, csak a változók értékeit adjuk át. Ezt úgy lehet elérni, hogy dummy változókat hoznak létre a memóriában.



#include névtér használatával std void add (int a, int b) {a = a + 10 b = b + 10 cout<<'Value of a = '<  Hívás érték szerint C ++ nyelven

A fenti képből láthatjuk, hogy amint meghívjuk az add () függvényt, az x és y változók értéke átmásolódik az a és b változókba. A és b dummy változók.

Hívás hivatkozással: Most beszéljünk a hívásról referencia módszerrel. Ebben a módszerben külön dummy változókat nem hozunk létre, egy már létező változó hivatkozását továbbítjuk a módszerhez. Ez a hivatkozás ugyanarra a memóriahelyre mutat, ezért külön másolatok nem készülnek a memóriában. Itt fontos megjegyezni, hogy a referenciaváltozókban végrehajtott változtatások a dummy változóban tükröződnek.

#include névtér használatával 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 

Amint láthatjuk, hogy a fenti függvény másképp néz ki a normál függvényekhez képest, mivel a visszatérés típusa „int &”. Ez a függvény a feltételtől függően visszaadja a vagy b hivatkozást. Itt fontos megjegyezni, hogy az értékeknem adják vissza.

Ha min (x, y) = 10. függvényt hívunk, akkor 10-et rendelünk x-hez, ha ez minimum, vagy y-hez, ha y minimum.

Hívás referenciával Vs Pointer

Minden példánkban láttuk, hogy mindig hozzárendeltünk egy értéket az általunk létrehozott referencia változóhoz, mivel a referencia változók nem lehetnek NULL, míg a mutató változók lehetnek NULL és váratlan hibákat okozhatnak.

A referenciaváltozókat nem lehet újra hozzárendelni, míg a mutatóváltozók a program későbbi részében valamilyen más változóra mutathatnak.

A mutatóváltozó egy adott változó címértékét tartja, míg a referenciaváltozó címe megegyezik azzal a változóval, amelyre hivatkozik.

Ezzel véget értünk ennek a C ++ cikkben szereplő hivatkozási felhívásnak. Remélem, megértette a felhívás különböző megvalósítását az Érték és a referencia alapján, és hogy mindkettő hogyan különbözik egymástól.

Ha többet szeretne megtudni, nézze meg a Edureka, egy megbízható online tanulási társaság. Az Edureka Java J2EE és SOA képzési és tanúsítási tanfolyamát arra tervezték, hogy mind az alapvető, mind a fejlett Java koncepciókra kiképezzen különféle Java keretrendszereket, például a Hibernate & Spring.

Van egy kérdésünk? Kérjük, említse meg a blog megjegyzés rovatában, és a lehető leghamarabb kapcsolatba lépünk Önnel.