1: Passing Arguments per valore
Una copia della variabile viene effettuata e fornita alla funzione quando Gli argomenti sono passati per valore. Tutte le modifiche apportate alla variabile all'interno della funzione influiscono solo sulla copia; Niente viene modificato nella variabile originale. Di conseguenza, passando per valore è un metodo sicuro perché non vi è alcuna possibilità di modificare involontariamente il valore della variabile originale.
Passando per valore, Tuttavia, potrebbe essere inefficace, specialmente quando si tratta di tipi di dati grandi o complicati. Ogni chiamata di funzione che richiede una copia dei dati può esaurire rapidamente la CPU e le risorse di memoria. Inoltre, passando per valore non può essere utilizzato per funzioni che mirano a modificare il valore della variabile originale perché la copia e la variabile originale non sono collegate.
2: Argomenti di passaggio per riferimento
Le variabili possono essere Passato per riferimento Anche in C ++, il che aiuta a risolvere questi problemi. La variabile originale viene inviata alla funzione quando Passando per riferimento, e qualsiasi modifica eseguita nella variabile all'interno della funzione influenzerà anche la variabile originale. A causa di ciò, Passando per riferimento è sostanzialmente più efficace per i tipi di dati grandi o complicati ed evita la necessità di copiare.
Per prevenire modifiche non intenzionali, una funzione deve essere esplicitamente designata come const. L'aggiunta della parola chiave const alla dichiarazione della funzione, come in "int calcola (const int & a, const int & b)", realizzerà questo.
Tuttavia, Passando argomenti per riferimento richiede anche un'attenta attenzione ai dettagli. I programmatori inesperti possono commettere errori, come la creazione di effetti collaterali involontari, la condivisione non intenzionale di dati e il principale dati esterni.
Considera il seguente codice che dimostra entrambi Metodi di passaggio dell'argomento:
#includereNel codice sopra, la prima funzione, PassbyValue, riceve un argomento intero per valore. All'interno della funzione, viene creata una nuova variabile intera e assegnata il valore 5. Il numero intero originale rimane non modificato. La seconda funzione, Passbyreference, riceve un argomento intero per riferimento. In questo caso, la funzione manipola direttamente la variabile originale.
Produzione
Come previsto, la prima chiamata emette 5, ma non ha alcun effetto sulla variabile originale. Al contrario, la seconda chiamata modifica il valore di NUM2 a 5, che influisce sull'output dell'istruzione finale.
Passare per valore vs. Passare per riferimento
1: modo di chiamare una funzione
Una differenza tra passando per valore E Passando per riferimento è come si chiama la funzione. Quando passando per valore, La chiamata di funzione deve includere il valore della variabile, come "Calcola (a, b)". Quando Passando per riferimento, La chiamata di funzione deve includere l'indirizzo di memoria della variabile, simboleggiato da un carattere AmperSand, come "Calcola (& A, & B)".
2: tipi di dati
Generalmente, passando per valore è più appropriato quando si lavora con tipi di dati piccoli o semplici o quando la funzione non è destinata a modificare la variabile originale. Passando per riferimento è più appropriato per i tipi di dati grandi o complessi o quando la funzione è destinata a modificare il valore della variabile originale.
Conclusione
Quando i parametri sono Passato per valore A una funzione, viene creata e fornita una copia della variabile. Di Passando per riferimento, La variabile originale viene inviata alla funzione. In c++, Passare gli argomenti per valore o per riferimento è un concetto fondamentale. La scelta dell'approccio giusto dipende dalle circostanze specifiche e dovrebbe essere valutata attentamente. I vantaggi dell'utilizzo del riferimento L'approccio può comportare un codice più efficace, nonostante la tentazione di utilizzare il più facile passando per valore metodo.