Referenz (Programmierung)
Eine Referenz ist ein Verweis auf ein Objekt. Eine Referenz ist damit ein Aliasname für ein Objekt.
Beispiel in C++[Bearbeiten]
Wirkungsweise einer Referenz
int nOriginal = 5; int& nReferenz = nOriginal; // Referenzobjekt angelegt // die Referenz verweist auf das Original nReferenz = 20; // weist der Referenz und somit auch dem Original den Wert 20 zu int nKopie = nOriginal; // nKopie = 20
Beispiel zur Parameterübergabe als Referenz, siehe auch Referenzparameter
void quadrieren(int& wert) { wert = wert * wert; } int main() { int nZahl = 5; quadrieren(nZahl); // Aufruf der Funktion - danach nZahl == 25 return 0; }
Es wird mit der Originalvariablen gearbeitet, gleichgültig ob der Variablenname in der Funktion mit dem Namen der Aufrufvariablen identisch ist.
Beispiel für Objektreferenzen
Bank& nBank = Bankenverzeichnis::nachBLZ("76543210"); // eine Referenz auf ein Bankobjekt wird beschafft Konto& nKonto1 = nBank.kontoZugriff("1234567"); // eine Referenz auf ein bestimmtes Kontoobjekt wird beschafft Konto& nKonto2 = nBank.kontoZugriff("1111111"); // eine Referenz auf ein weiteres Kontoobjekt wird beschafft nKonto1.einzahlung(100.00, "EUR", nKonto2); // eine Methode wird auf nKonto1 gerufen
Die Referenzen nBank, nKonto1 und nKonto2 referenzieren jeweils ein Objekt. Das &-Symbol kennzeichnet diese Variablen als Referenzen im Sinne der Programmiersprache.
Beispiel in Pascal[Bearbeiten]
Übergabe by reference (der Wert der übergebenen Variablen wird geändert)
procedure quadriere(var wert: integer); begin wert := wert * wert; end;
Dieser Prozedur kann nur eine Variable übergeben werden, kein Ausdruck. wert ist der lokale Name der als Referenz übergebenen Variablen; mit der Zuweisung eines Werts wird direkt der Inhalt der übergebenen Variablen geändert.
Übergabe by value (also nur des Werts, nicht der Variablen selbst; der Wert der übergebenen Variablen wird nicht geändert)
function quadrat(wert: integer): integer; begin Result := wert * wert; end;
Selbst wenn eine Zuweisung an wert erfolgen würde, würde dies den Inhalt einer etwa übergebenen Variablen nicht ändern: Übergeben wird nur ein Wert; der Bezeichner wert steht für eine lokale Variable, die nur innerhalb der Funktion gültig ist.