Hoppa till innehållet

Referens (C++)

Från Wikipedia

En referens i C++ är en mekanism som gör det möjligt för två olika variabler att peka på samma minnesutrymme. Ofta används de för att låta funktioner dela (icke globala) variabler mellan sig samt för att låta en funktion returnera mer än ett värde.

Beskrivning och exempel

[redigera | redigera wikitext]

I C++ kan en funktion med inparametrar anropas på två olika sätt, beroende på hur parametrarna är definierade: genom värdeanrop (vilket är vanligast) och genom referensanrop. Vid ett värdeanrop skapas lokala kopior av parametrarna inne i funktionen, vilket får till effekt att funktionen aldrig kan ändra på parametrarnas värde utanför funktionen. Om parametern däremot görs till en referens kommer den att vara samma inne i funktionen som utanför funktionen. Om funktionen då ändrar parameterns värde kommer det även att ändras i resten av programmet. En referensparameter känns igen på att parameterns typ följs av ett &-tecken:

Följande kodsnutt ger ett exempel på skillnaden i beteende då två funktioner som båda gör samma sak (tilldelar inparametern värdet '2') då de anropas med referensparameter respektive en värdeparameter:

#include <iostream>

void VardeFunktion (int i)  {
    i = 2;
} 

void RefFunktion (int& k) {
    k = 2;
}

int main() {
    int m = 0;
    int n = 0;

    VardeFunktion (m);
    RefFunktion (n);

    cout << "m: " << m << endl;
    cout << "n: " << n << endl;
}

Programmet ger följande utskrift:

m: 0
n: 2

Typiska användningsområden

[redigera | redigera wikitext]

I följande situationer vill man typiskt använda sig av referensparametrar istället för värdeparametrar vid funktionsanrop:

  • När en funktion skall returnera mer än ett värde
  • När man vill minimera stackstorleken (exempelvis om man har begränsat minne)