Š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
![](https://cdn.wiki-base.com/5527966/c_programming_default_arguments_parameters.png.webp)
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 )