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.