Beispiele (2/4)

Anders verhält es sich in folgendem Beispiel, eine Funktion, die eine Integerzahl als Binärzahl ausgibt (dies allerdings rückwärts, d.h. mit dem niedrigsten Bit zuerst):

  void binaer(unsigned int a)
  {
    while (a)
    {
      cout<< a%2; // Rest modulo 2
      a>>=1;      // Eine Stelle nach rechts schieben
    }
  }

Hier wird a innerhalb des Funktionsrumpfes solange halbiert, bis es Null erreicht hat. Würde hier ein Referenzparameter übergeben, so würde jede Variable, die man an diese Funktion übergibt auf Null gesetzt - ein sicherlich unerwünschter Nebeneffekt. Außerdem wäre der Aufruf mit Konstanten nicht möglich, da auch eine Übergabe als konstante Referenz nicht möglich wäre, da a ja verändert wird.

Die einzige Lösung, um diese Funktion mit einer Referenzübergabe zu implementieren wäre es, eine lokale Kopie des Parameters zu erzeugen, aber dann kann man sich den Umweg über die Referenzübergabe sparen und gleich eine Wertübergabe nutzen.