Come implementare la chiamata per riferimento in C ++



Questo articolo ti fornirà una conoscenza dettagliata di Call by Reference in C ++ con implementazioni e di come differisce da Call by Value.

Lavorare con C ++ non è un compito difficile se hai già un background in C poiché entrambi condividono tonnellate di concetti tra loro. Tuttavia, C ++ ha alcuni concetti che non fanno parte del paradigma C. In questo articolo Call by Reference in C ++, parleremo di uno di questi concetti che sono le variabili di riferimento e le sue applicazioni nell'ordine seguente:

Variabili di riferimento

C ++ ci offre un nuovo tipo di variabile, ovvero una variabile di riferimento. Possiamo pensare a una variabile di riferimento come un soprannome per la nostra variabile originale. Questa è l'esatta funzionalità di una variabile di riferimento in una riga.





Ad esempio, se ti chiami Harrison ma a casa, i tuoi familiari ti chiamano Harry. Passiamo ora ad alcuni dettagli delle variabili di riferimento. La dichiarazione e l'uso di questo tipo di variabile sono diversi dalle normali variabili che usiamo ma molto simili alle variabili pointer.

Sintassi:



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

Quando creiamo una variabile 'Hello' contenente il valore '1', un segmento di memoria viene utilizzato per irritare il valore '1', il nome di questo segmento sarà 'Hello' e l'indirizzo di questo segmento sarà un valore esadecimale, ad esempio0x64. quando scriviamoint& World = CiaoViene creata la variabile 'World' che punta verso la stessa posizione di memoria.

Includendo la riga World ++, verranno apportate modifiche all'indirizzo 0x64, ciò significa che anche il valore della variabile 'Hello' cambierà. Qualcuno potrebbe far notare che come stanno variabili di riferimento diverse dalle variabili puntatore di cui parleremo nell'ultima parte di questo articolo.

Chiama per valore e Chiama per riferimento in C ++

Chiama per valore: Call by Value è un metodo ampiamente utilizzato. La maggior parte delle volte utilizzerai l'approccio della chiamata in base al valore poiché non desideri che i valori originali delle variabili vengano modificati. Quindi abbiamo usato il metodo call by value per chiamare una funzione, vengono passati solo i valori delle variabili. Ciò si ottiene creando variabili fittizie in memoria.



#include using namespace std void add (int a, int b) {a = a + 10 b = b + 10 cout<<'Value of a = '<  Chiama per valore in C ++

Dall'immagine sopra, possiamo vedere che non appena chiamiamo la funzione add () i valori delle variabili x e y vengono copiati nelle variabili a e b. A e b sono variabili fittizie.

Chiama per riferimento: Ora parliamo della chiamata per metodo di riferimento. In questo metodo non vengono create variabili fittizie separate, al metodo viene passato un riferimento a una variabile già esistente. Questo riferimento punta alla stessa posizione di memoria, quindi non vengono eseguite copie separate nella memoria. Il punto importante da notare qui è che le modifiche apportate alle variabili di riferimento si riflettono nella variabile fittizia.

#include using namespace std void add (int & a, int & b) {a = a + 10 b = b + 10 cout<<'Value of a = '< 

cosa è ibernato in java

Ritorno per riferimento in C ++

Il modo in cui possiamo passare riferimenti a una funzione possiamo anche restituire riferimenti da una funzione.

int & min (int & a, int & b) {if (a 

Come possiamo vedere, la funzione sopra ha un aspetto diverso rispetto alle funzioni normali poiché il tipo restituito è 'int &'. Questa funzione restituisce un riferimento a aob a seconda della condizione. Il punto importante da notare qui è che i valorinon vengono restituiti.

Se chiamiamo la funzione min (x, y) = 10. 10 verrà assegnato a x se è minimo oa y se è minimo.

Chiama per riferimento vs puntatore

In tutti i nostri esempi abbiamo visto che abbiamo sempre assegnato un valore alla variabile di riferimento che abbiamo creato poiché le variabili di riferimento non possono essere NULL mentre le variabili puntatore possono essere NULL e possono causare errori imprevisti.

Le variabili di riferimento non possono essere riassegnate mentre le variabili puntatore possono puntare a qualche altra variabile più avanti nel programma.

Una variabile puntatore contiene il valore dell'indirizzo di una particolare variabile mentre l'indirizzo della variabile di riferimento è uguale a quello della variabile a cui si riferisce.

Con questo, arriviamo alla fine di questo articolo Call By Reference in C ++. Mi auguro che abbiate capito le varie implementazioni dell'invito di Value e di riferimento e come differiscono entrambe.

Se desideri saperne di più, dai un'occhiata al da Edureka, una società di apprendimento online affidabile. Il corso di formazione e certificazione Java J2EE e SOA di Edureka è progettato per formarti sia sui concetti di base che avanzati su Java insieme a vari framework Java come Hibernate e Spring.

Hai domande per noi? Per favore, menzionalo nella sezione commenti di questo blog e ti risponderemo il prima possibile.