Optionale Argumente in C++
Funktionen können optionale Argumente haben. Hierzu kann den letzten Parametern ein Vorgabewert zugeordnet werden. Diese können dann von hinten nach vorne weggelassen werden. Wurde ein Argument weggelassen, so müssen also auch alle folgenden Argumente weggelassen werden.
Da es keine vordefinierte und einfach zu verwendende Standardfunktion gibt, für die ein Vorgabewert definiert ist und es zu undefiniertem Verhalten führte, wenn Programme eigene Deklarationen für Vorgabewerte zu Funktionen aus dem Namesraum "::std" hinzufügten, kann kein einfaches Beispielprogramm geschrieben werden, das die Verwendung eines Vorgabewertes anhand der Standardbücherei vorführte.
Deswegen verwenden die folgende Beispielprogramme eine erfundene Funktion "root" zur Berechnung der Wurzel eines Radikanden. Der erste Parameter ist der Radikand (engl.: “radicand ”). Der zweite Parameter dieser Funktion ist der Wurzelexponent (engl.: “exponent of the root ”) mit dem Vorgabewert "2".
Synopse
double root( double, double = 2 );
Weil es diese Funktion nicht wirklich in C++ gibt (wenn man sie nicht definiert, was in anderen Lektionen behandelt wird), sind die beiden folgenden Beispielprogramme so natürlich nicht ausführbar. Praktischen Nutzen haben die Vorgabewerte aber trotzdem, nämlich in Zusammenhang mit programmiererdefinierten Funktionen, die in anderen Lektionen behandelt werden und mit einigen Funktionen der C++ -Bücherei, die aber hier noch nicht verwendet werden sollen, weil sie für diese Lektion zu viel Fachwissen voraussetzen.
Das folgende Programm berechnete, wenn es eine solche Funktion gäbe, die dritte Wurzel aus 16.
Wurzel.cpp
#include <iostream>
#include <ostream>
int main(){ ::std::cout << root( 27, 3 )<< '\n'; }::std::cout
3
Das nächste Programm berechnete dann mit derselben Funktion eine Quadratwurzel. In diesem Fall wurde das zweite Argument einfach weggelassen. Weil Argumente nur von hinten nach vorne weggelassen werden können, ist es klar, daß das angegebene Argument zum Radikand-Parameter gehört. Durch den definierten Vorgabewert "2" ist auch festgelegt, daß der Funktionsausdruck so berechnet wird, als sei der Wurzelexponent 2 angegeben.
Quadratwurzel.cpp
#include <iostream>
#include <ostream>
int main(){ ::std::cout << root( 64 )<< '\n'; }::std::cout
8