Standardparameter

Beispielprogramm: STANDARD.CPP

Das Programm STANDARD.CPP ist ein Beispiel für die Verwendung von Standardparametern in C++. Dieses Programm erweckt sicherlich einen etwas eigenartigen Eindruck, weil es für einige Parameter im Prototypen Standardwerte festlegt. Diese Standardwerte können aber sehr nützlich sein, wie wir gleich sehen werden.

Der Prototyp sagt uns, daß der erste Parameter, Laenge, bei jedem Funktionsaufruf angegeben werden muß, da für ihn kein Standardparameter festgelegt wurde. Den zweiten Parameter, Weite, müssen wir nicht bei jedem einzelnen Aufruf angeben, und wenn wir ihn nicht explizit angeben, verwendet das Programm den Wert 2 für die Variable Weite innerhalb der Funktion. So ist auch der dritte Parameter optional, und wird er nicht angegeben, wird in der Funktion der Wert 3 für die Variable Hoehe verwendet.

In Zeile 11 dieses Programmes geben wir alle drei Parameter explizit an, es ist also nichts Außergewöhnliches an diesem Funktionsaufruf zu bemerken. In Zeile 12 geben wir allerdings nur zwei Werte an und verwenden also den Standardparameter für die dritte Variable. Das System reagiert genau so, als hätten wir die Funktion mit Volumen(x, y, 3) aufgerufen, da der Standardwert für den dritten Parameter 3 ist. In Zeile 13 geben wir beim Funktionsaufruf nur mehr einen Wert an, der für den ersten formellen Parameter verwendet wird, die beiden anderen nehmen die Standardwerte an. Das System verhält sich, als hätten wir die Funktion mit Volumen(x, 2, 3) aufgerufen. Beachte, daß die Ausgabe dieser drei Zeilen umgekehrt erfolgt. Darauf werden wir in kürze eingehen.

Es gibt einige Regeln, die zwar offensichtlich sind, aber dennoch hier aufgeführt werden sollen. Sobald ein Parameter in der Liste der formellen Parameter einen Standardwert erhält, müssen auch die folgenden Parameter Standardwerte haben. Es ist nicht möglich, in der Mitte der Liste ein Loch zu lassen, die Vergabe von Standardwerten erfolgt von hinten nach vorne. Selbstredend müssen die Standardwerte die richtigen Variablentypen haben, andernfalls gibt der Compiler eine Fehlermeldung aus. Die Standardwerte können entweder im Prototypen oder im Funktionskopf angegeben werden, nicht jedoch in beiden. Würden die Standardwerte an beiden Orten angegeben, müßte der Compiler nämlich nicht nur diese Standardwerte verwenden, er müßte auch genau überprüfen, ob die beiden Werte auch wirklich identisch sind. Dies würde ein schon sehr schwieriges Unterfangen, das der Entwicklung eines C++ Compilers, noch weiter komplizieren.

Es sei hier wärmstens empfohlen, die Standardparameter im Prototypen anzugeben und nicht im Funktionskopf. Der Grund dafür wird klar werden, sobald wir objektorientierte Programmiertechniken anwenden.

(weiter...)