V tomto tutoriále sa naučíme predvolené argumenty C ++ a ich prácu pomocou príkladov.
V programovaní v C ++ môžeme poskytnúť predvolené hodnoty pre funkčné parametre.
Ak sa volá funkcia s predvolenými argumentmi bez odovzdávania argumentov, použijú sa predvolené parametre.
Ak sa však pri volaní funkcie odovzdajú argumenty, predvolené argumenty sa ignorujú.
Fungovanie predvolených argumentov
Ako fungujú predvolené argumenty v C ++Fungovanie predvolených argumentov môžeme pochopiť z obrázku vyššie:
- Keď
temp()
sa zavolá, funkcia použije oba predvolené parametre. - Keď
temp(6)
sa volá, prvý argument sa stane,6
kým sa pre druhý parameter použije predvolená hodnota. - Pri
temp(6, -2.3)
volaní sú prepísané oba predvolené parametre, čo má za následoki = 6
af = -2.3
. - Pri
temp(3.4)
zadaní sa funkcia správa nežiaducim spôsobom, pretože bez odovzdania prvého argumentu nie je možné odovzdať druhý argument.
Preto3.4
sa odovzdáva ako prvý argument. Pretože prvý argument bol definovaný akoint
, hodnota, ktorá sa v skutočnosti odovzdá, je3
.
Príklad: Predvolený 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ýkon
Neposlal žiadny argument: *** Prvý zadaný argument: ### Oba zadané argumenty: $$$$$
Tento program funguje takto:
display()
sa volá bez zadania akýchkoľvek argumentov. V takom prípadedisplay()
použije predvolené parametrec = '*'
ajn = 1
.display('#')
sa volá iba s jedným argumentom. V tomto prípade sa stane prvý'#'
. Druhý predvolený parametern = 1
sa zachová.display('#', count)
sa volá s oboma argumentmi. V takom prípade sa predvolené argumenty nepoužijú.
Predvolené parametre môžeme definovať aj v samotnej definícii funkcie. Program uvedený nižšie je ekvivalentom vyššie uvedeného programu.
#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; )
Na čo treba pamätať
- Keď pre parameter zadáme predvolenú hodnotu, musia mať predvolené hodnoty aj všetky nasledujúce parametre. Naprí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);
- Ak definujeme predvolené argumenty v definícii funkcie namiesto prototypu funkcie, potom musí byť funkcia definovaná pred volaním funkcie.
// Invalid code int main() ( // function call display(); ) void display(char c = '*', int count = 5) ( // code )