V tomto kurzu se naučíme výchozí argumenty C ++ a jejich práci pomocí příkladů.
V programování v C ++ můžeme poskytnout výchozí hodnoty pro funkční parametry.
Pokud je funkce s výchozími argumenty volána bez předávání argumentů, použijí se výchozí parametry.
Pokud jsou však při volání funkce předány argumenty, výchozí argumenty jsou ignorovány.
Práce s výchozími argumenty

Můžeme pochopit fungování výchozích argumentů z obrázku výše:
- Když
temp()
je volána, funkce používá výchozí parametry. - Při
temp(6)
volání se první argument stane,6
zatímco pro druhý parametr se použije výchozí hodnota. - Při
temp(6, -2.3)
volání jsou přepsány oba výchozí parametry, což má za následeki = 6
af = -2.3
. - Když
temp(3.4)
je předán, funkce se chová nežádoucím způsobem, protože druhý argument nelze předat bez předání prvního argumentu.
Proto3.4
je předán jako první argument. Protože první argument byl definován jakoint
, hodnota, která je ve skutečnosti předána, je3
.
Příklad: Výchozí argument
#include using namespace std; // defining the default arguments void display(char = '*', int = 3); int main() ( int count = 5; cout << "No argument passed: "; // *, 3 will be parameters display(); cout << "First argument passed: "; // #, 3 will be parameters display('#'); cout << "Both arguments passed: "; // $, 5 will be parameters display('$', count); return 0; ) void display(char c, int count) ( for(int i = 1; i <= count; ++i) ( cout << c; ) cout << endl; )
Výstup
Žádný argument předán: *** První argument předán: ### Oba předané argumenty: $$$$$
Tento program funguje takto:
display()
je volána bez předání jakýchkoli argumentů. V tomto případědisplay()
použije výchozí parametryc = '*'
in = 1
.display('#')
je volán pouze s jedním argumentem. V tomto případě se stane první'#'
. Druhý výchozí parametrn = 1
je zachován.display('#', count)
je volán s oběma argumenty. V tomto případě se nepoužívají výchozí argumenty.
Můžeme také definovat výchozí parametry v samotné definici funkce. Níže uvedený program je ekvivalentní výše uvedenému.
#include using namespace std; // defining the default arguments void display(char c = '*', int count = 3) ( for(int i = 1; i <= count; ++i) ( cout << c; ) cout << endl; ) int main() ( int count = 5; cout << "No argument passed: "; // *, 3 will be parameters display(); cout << "First argument passed: "; // #, 3 will be parameters display('#'); cout << "Both argument passed: "; // $, 5 will be parameters display('$', count); return 0; )
Věci k zapamatování
- Jakmile pro parametr zadáme výchozí hodnotu, musí mít všechny následující parametry také výchozí hodnoty. Například,
// Invalid void add(int a, int b = 3, int c, int d); // Invalid void add(int a, int b = 3, int c, int d = 4); // Valid void add(int a, int c, int b = 3, int d = 4);
- Pokud definujeme výchozí argumenty v definici funkce namísto prototypu funkce, musí být funkce definována před voláním funkce.
// Invalid code int main() ( // function call display(); ) void display(char c = '*', int count = 5) ( // code )