next up previous contents
Next: Überladen von Funktionen Up: Funktionen und Operatoren Previous: inline Funktionen

Defaultargumente

Häufig stellt sich die Frage, wie man eine Funktion ``erweitern'' kann, ohne die Funktionalität eines bestehenden Programms, das diese Funktion verwendet, zu verändern, oder wie man eine Funktion, die zur vollständigen Charakterisierung mehrere Argumente benötigt, einfach bedienbar gestalten kann. Diese Aufgaben können mit Defaultargumenten gelöst werden. Beispielsweise könnte eine Funktion zum Löschen eines Feldes so aussehen:

  void clear(int size, int *array){
    for (int i=0; i < size; i++ )
       array[i] = 0;
  }
Diese läß sich später leicht zu einer Funktion erweitern, die das Feld mit einem beliebigen Wert füllt:
  void clear(int size, int *array, int value=0){
    for (int i=0; i < size; i++ )
       array[i] = value;
  }
Ein Defaultargument muß einen konstanten Wert besitzen, der zur Compilezeit feststeht und eindeutig ist. Das bedeutet, daß dieser in jeder Übersetzungseinheit nur einmal spezifiziert werden darf. Wenn sichergestellt ist (z.B. mit include guards im header-file), daß der Compiler nur eine Deklaration der Funktion sieht, dann ist der beste Platz, um den Defaultwert festzulegen, in einer Funktionsdeklaration in einem header-file. Ansonsten sollte dieser Wert bei der Definition der Funktion festgelegt werden.



© R.Hilfer et al., ICA-1, Univ. Stuttgart
28.6.2002