Vorgegebene Argumente (1/3)

Eine spezielle Variante des Überladens ist die Vorgabe von Argumenten, sogenannte Vorgabewerte (engl. default values). Dabei können dem Compiler bei der Deklaration einer Funktion für Parameter Werte vorgegeben werden, die er nutzt, falls der entsprechende Parameter fehlt. Das Ergebnis entspricht einem Überladen der Funktion mit unterschiedlichen Parameterzahlen. So könnte eine Funktion, die wie folgt definiert ist, mit einem Parameter Quadrate berechnen, mit zweien unterschiedliche Potenzen:

  int potenz(int basis, int exponent=2)
  {
    int hilf=1;
    for (int i = 1; i < exponent; i++)
      hilf *= basis;
    return hilf;
  }

Bei dem Aufruf können dann unterschiedlich viele Parameter genutzt werden:

  potenz(5);      // ergibt 25
  potenz(5,2);    // ergibt auch 25
  potenz(3,4);    // ergibt 81 

Dabei können theoretisch alle Parameter mit Vorgabewerten versehen werden, allerdings müssen hinter einem Parameter mit Vorgabewert alle folgenden auch Vorgabewerte haben. Folgende Deklaration ist ungültig (zumindest falls sie nicht vorher schon mit einem Vorgabewert für c deklariert wurde):

  void falsch(int a, int b=5, double c);    // Fehler! 

Auch ist es nicht möglich, einen Parameter anzugeben, falls davor Parameter weggelassen werden, da der Compiler dann nicht weiß, welcher gemeint ist. Dies gilt unabhängig davon, ob die Typen der Parameter gleich oder unterschiedlich sind.