Werden für Parameter häufig gleiche Werte übergeben, können für diese Parameter Defaultwerte definiert werden.
Um für einen Parameter ein Defaultwert zu definieren, folgt nach dem Parameternamen der Zuweisungsoperator und anschließend der Defaultwert. Dabei ist zu beachten, dass für alle nach einem Parameter mit einem Defaultwert (Default-Parameter) folgenden Parameter ebenfalls Defaultwerte definiert sein müssen.
Default-Parameter können entweder bei Deklaration oder Definition der Funktion definiert werden.
// Funktion zum Aufsummieren von 2, 3 oder 4 ints
int Sum(int val1, int val2, int val3=0, int val4=0)
{
return val1+val2+val3+val4;
}
// Aber das ist nicht erlaubt, da fuer den nach
// val3 folgenden Parameter val4 kein Defaultwert
// vorgegeben wurde!
// int Sum(int val1, int val2, int val3=0, int val4)
Beim Funktionsaufruf können Argumente, für die ein Default-Parameter definiert ist, weggelassen werden. Wird aber für ein Default-Parameter ein Argument übergeben, sind für alle davorstehenden Default-Parameter ebenfalls Argumente zu übergeben.
#include <iostream>
#include <format>
// Funktion zum Aufsummieren von bis zu 4 ints
int Sum(int val1, int val2, int val3=0, int val4=0)
{
return val1+val2+val3+val4;
}
int main()
{
// Beliebige ints definieren
int v1=1, v2=2;
// 2 Werte addieren
std::cout << std::format("v1+v2: {}\n",Sum(v1,v2));
// 3 Werte addieren
std::cout << std::format("v1+v2+v1: {}\n",Sum(v1,v2,v1));
// 4 Werte addieren
std::cout << std::format("v1+v2+v2+v1: {}\n",Sum(v1,v2,v2,v1));
// Aber folgendes fuehrt zu einem Fehler!
// auto res = Sum(v1,v2,,v1);
}