1: Passerende argumenter etter verdi
En kopi av variabelen er laget og levert til funksjonen når Argumenter sendes av verdi. Alle modifikasjoner gjort i variabelen i funksjonen påvirker bare kopien; Ingenting blir endret til den opprinnelige variabelen. Som et resultat, Passering av verdi er en sikker metode fordi det ikke er noen mulighet for utilsiktet å endre verdien av den opprinnelige variabelen.
Passering av verdi, Imidlertid kan det være ineffektivt, spesielt når du arbeider med store eller kompliserte datatyper. Hver funksjonssamtale som krever en kopi av dataene, kan raskt eksos CPU og minnressurser. Dessuten, Passering av verdi kan ikke brukes til funksjoner som tar sikte på å endre verdien av den opprinnelige variabelen fordi kopien og den opprinnelige variabelen ikke er koblet.
2: Bestående argumenter som referanse
Variabler kan være passert med referanse I C ++ også, noe som hjelper til med å løse disse problemene. Den opprinnelige variabelen sendes til funksjonen når passerer med referanse, og eventuelle modifikasjoner utført til variabelen inne i funksjonen vil også påvirke den opprinnelige variabelen. På grunn av dette, passerer med referanse er vesentlig mer effektivt for store eller kompliserte datatyper og unngår behovet for kopiering.
For å forhindre utilsiktede modifikasjoner, må en funksjon eksplisitt utpekes som Const. Legge til Const -nøkkelordet til funksjonserklæringen, som i "Int Calculat (Const Int & A, Const Int & B)," vil oppnå dette.
derimot, Passerende argumenter ved referanse krever nøye oppmerksomhet på detaljer også. Uerfarne programmerere kan gjøre feil, for eksempel å skape utilsiktede bivirkninger, utilsiktet deling av data og overstyre eksterne data.
Tenk på følgende kode som demonstrerer begge deler argument forbipasserende metoder:
#inkludereI koden ovenfor, den første funksjonen, PassbyValue, mottar et heltallsargument etter verdi. Innenfor funksjonen opprettes en ny heltallvariabel og tildeles verdien 5. Det opprinnelige heltallet forblir umodifisert. Den andre funksjonen, Passbyreference, mottar et heltallsargument ved referanse. I dette tilfellet manipulerer funksjonen direkte den opprinnelige variabelen.
Produksjon
Som forventet, er den første samtaleutgangen 5, men har ingen innvirkning på den opprinnelige variabelen. I kontrast endrer den andre samtalen verdien av NUM2 til 5, noe som påvirker utgangen fra den endelige uttalelsen.
Pass på verdi vs. Pass på referanse
1: Måten å kalle en funksjon
En forskjell mellom Passering av verdi og passerer med referanse er hvordan funksjonen kalles. Når Passering av verdi, Funksjonssamtalen må inneholde variabelenes verdi, for eksempel 'beregne (a, b)'. Når passerer med referanse, Funksjonssamtalen må inneholde variabelenes minneadresse, symbolisert av en ampersand -tegn, for eksempel 'beregne (& a, & b)'.
2: Datatyper
Generelt, Passering av verdi er mest passende når du jobber med små eller enkle datatyper, eller når funksjonen ikke er ment å endre den opprinnelige variabelen. Passerer med referanse er mer passende for store eller komplekse datatyper, eller når funksjonen er ment å endre den opprinnelige variabelenes verdi.
Konklusjon
Når parametere er passert av verdi Til en funksjon opprettes og leveres en kopi av variabelen. Av passerer med referanse, Den opprinnelige variabelen blir sendt til funksjonen. I c++, passerer argumenter etter verdi eller med referanse er et grunnleggende konsept. Å velge riktig tilnærming avhenger av de spesifikke omstendighetene og bør evalueres nøye. Fordelene ved å bruke henvisning Tilnærming kan resultere i mer effektiv kode, til tross for fristelsen til å bruke det enklere Passering av verdi metode.