Šajā apmācībā mēs uzzināsim C ++ noklusējuma argumentus un to darbību ar piemēru palīdzību.
Programmējot C ++, mēs varam nodrošināt funkciju parametru noklusējuma vērtības.
Ja tiek izsaukta funkcija ar noklusējuma argumentiem, nenododot argumentus, tiek izmantoti noklusējuma parametri.
Tomēr, ja argumenti tiek nodoti, izsaucot funkciju, noklusējuma argumenti tiek ignorēti.
Noklusējuma argumentu darbība

Noklusējuma argumentu darbību mēs varam saprast no iepriekš redzamā attēla:
- Kad
temp()
tiek izsaukts, funkcija izmanto abus noklusējuma parametrus. - Kad
temp(6)
tiek izsaukts, pirmais arguments kļūst,6
bet otrajam parametram tiek izmantota noklusējuma vērtība. - Kad
temp(6, -2.3)
tiek izsaukts, abi noklusētie parametri tiek ignorēti, kā rezultātā rodasi = 6
unf = -2.3
. - Kad tas
temp(3.4)
tiek nodots, funkcija rīkojas nevēlamā veidā, jo otro argumentu nevar nodot, neizlaižot pirmo argumentu.
Tāpēc3.4
tiek nodots kā pirmais arguments. Tā kā pirmais arguments ir definēts kāint
, faktiski nodotā vērtība ir3
.
Piemērs: noklusējuma arguments
#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; )
Rezultāts
Nav iesniegts neviens arguments: *** Pirmais arguments: ### Abi argumenti: $$$$$
Šī programma darbojas šādi:
display()
tiek izsaukts, neizvirzot nevienu argumentu. Šajā gadījumādisplay()
izmanto gan noklusējuma parametrus,c = '*'
gann = 1
.display('#')
tiek izsaukts tikai ar vienu argumentu. Šajā gadījumā pirmais kļūst'#'
. Otrais noklusējuma parametrsn = 1
tiek saglabāts.display('#', count)
tiek izsaukts ar abiem argumentiem. Šajā gadījumā noklusējuma argumenti netiek izmantoti.
Noklusējuma parametrus mēs varam definēt arī pašā funkciju definīcijā. Zemāk redzamā programma ir līdzvērtīga iepriekšējai.
#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; )
Atceramās lietas
- Kad mēs norādīsim parametra noklusējuma vērtību, visiem nākamajiem parametriem jābūt arī noklusējuma vērtībām. Piemēram,
// 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);
- Ja mēs definējam noklusējuma argumentus funkcijas definīcijā, nevis funkcijas prototipā, tad funkcija ir jādefinē pirms funkcijas izsaukuma.
// Invalid code int main() ( // function call display(); ) void display(char c = '*', int count = 5) ( // code )