next up previous
Nächste Seite: Übung: Überladen und Referenzen Aufwärts: Worin bestehen wesentliche Unterschiede Vorherige Seite: Konstanten

Referenzen

In C gab es nur Zeiger:


int  i;
int *p;   // p is pointer to int

i = 1;
p = &i;

printf("i  = %d\n",i);
printf("*p = %d\n",*p);

*p = 2;

printf("i  = %d\n",i);
printf("*p = %d\n",*p);

In C++ gibt es zusätzlich Referenzen, d.h. man kann sich Aliase von Variablen erzeugen:


int  i;
int& j=i;   // j becomes a reference to (or an alias for) i

i=0;

cout << "i = " << i << endl;
cout << "j = " << j << endl;

j=2

cout << "i = " << i << endl;
cout << "j = " << j << endl;

Referenzen müssen initialisiert werden und können anschließend nicht mehr geändert werden.

Referenzen sind besonders bei der Parameterübergabe sinnvoll aber auch gefährlich:


void swap(
  int& i,
  int& j
) {
   int h=i; i=j; j=h;
}

...
  x=17;
  y=13;
  cout << "x = " << x << ", y = " << y << endl;
  swap(x,y);
  cout << "x = " << x << ", y = " << y << endl;
...



\fbox {\centerline{\parbox{0.9\textwidth}{
{\bfseries Regel:} Wir verwenden eine...
...ber sehr sp\uml {a}rlich und gut dokumentiert
(Warnung vor dem Seiteneffekt).}}}




1999-12-13