Šioje pamokoje sužinosime C ++ numatytuosius argumentus ir jų darbą pavyzdžių pagalba.
Programuodami C ++, galime pateikti numatytąsias funkcijų parametrų reikšmes.
Jei funkcija su numatytaisiais argumentais iškviečiama neperduodant argumentų, naudojami numatytieji parametrai.
Tačiau jei argumentai perduodami iškviečiant funkciją, numatytieji argumentai nepaisomi.
Numatytųjų argumentų veikimas

Numatytųjų argumentų veikimą galime suprasti iš aukščiau esančio paveikslėlio:
- Kai
temp()
iškviečiama, funkcija naudoja abu numatytuosius parametrus. - Kai
temp(6)
iškviečiamas, pirmasis argumentas tampa6
tuo metu, kai numatytoji reikšmė naudojama antram parametrui. - Kai
temp(6, -2.3)
iškviečiama, abu numatytieji parametrai yra nepaisomi, todėl gaunamai = 6
irf = -2.3
. - Kai
temp(3.4)
bus perduota, funkcija elgsis nepageidaujamai, nes antrojo argumento negalima perduoti neperdavus pirmojo argumento.
Todėl3.4
yra pateiktas kaip pirmasis argumentas. Kadangi pirmasis argumentas buvo apibrėžtas kaipint
, iš tikrųjų perduodama vertė yra3
.
Pavyzdys: numatytasis argumentas
#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; )
Rezultatas
Nepateiktas nė vienas argumentas: *** Pirmas argumentas perduotas: ### Abu argumentai perduoti: $$$$$
Štai kaip ši programa veikia:
display()
yra iškviečiamas nepateikus jokių argumentų. Šiuo atvejudisplay()
naudoja ir numatytuosius parametrus,c = '*'
irn = 1
.display('#')
vadinamas tik vienu argumentu. Šiuo atveju pirmasis tampa'#'
. Antrasis numatytasis parametrasn = 1
išlaikomas.display('#', count)
vadinamas abiem argumentais. Šiuo atveju numatytieji argumentai nenaudojami.
Taip pat numatytuosius parametrus galime apibrėžti pačiame funkcijos apibrėžime. Žemiau pateikiama programa yra tolygi aukščiau esančiai.
#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; )
Ką reikia atsiminti
- Kai pateiksime numatytąją parametro vertę, visi vėlesni parametrai taip pat turi turėti numatytąsias reikšmes. Pavyzdžiui,
// 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);
- Jei mes nustatome numatytuosius argumentus funkcijos apibrėžime, o ne funkcijos prototipe, tada funkcija turi būti apibrėžta prieš funkcijos iškvietimą.
// Invalid code int main() ( // function call display(); ) void display(char c = '*', int count = 5) ( // code )