Selles õpetuses õpime näidete abil C ++ vaikeargumente ja nende töötamist.
C ++ programmeerimisel saame anda funktsiooni parameetrite vaikeväärtused.
Kui vaikeargumentidega funktsiooni kutsutakse argumente edastamata, kasutatakse vaikeparameetreid.
Kui aga funktsiooni kutsumisel antakse argumente, ignoreeritakse vaikeargumente.
Vaikeargumentide töötamine
![](https://cdn.wiki-base.com/5527966/c_programming_default_arguments_parameters.png.webp)
Vaikimisi argumentide toimimisest saame aru ülaltoodud pildi järgi:
- Kui
temp()
helistatakse, kasutab funktsioon mõlemat vaikeparameetrit. - Kui
temp(6)
see kutsutakse, muutub esimene argument,6
samal ajal kui teise parameetri jaoks kasutatakse vaikeväärtust. - Kui
temp(6, -2.3)
helistatakse, tühistatakse mõlemad vaikeparameetrid, mille tulemuseks oni = 6
jaf = -2.3
. - Kui see
temp(3.4)
on edastatud, käitub funktsioon soovimatul viisil, kuna teist argumenti ei saa edastada ilma esimese argumendita.
Seetõttu3.4
edastatakse esimese argumendina. Kuna esimene argument on määratletud kuiint
, on tegelikult edastatud väärtus3
.
Näide: Vaikeargument
#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äljund
Ühtegi argumenti pole edastatud: *** Esimene argument on edastatud: ### Mõlemad argumendid on edastatud: $$$$$
See programm töötab nii:
display()
kutsutakse argumente esitamata. Sel juhuldisplay()
kasutab nii vaikeparameetreidc = '*'
kui kan = 1
.display('#')
kutsutakse ainult ühe argumendiga. Sel juhul saab esimene'#'
. Teine vaikeparameetern = 1
säilib.display('#', count)
nimetatakse mõlema argumendiga. Sellisel juhul vaikeargumente ei kasutata.
Vaikeparameetrid saame määratleda ka funktsiooni määratluses endas. Allpool olev programm on samaväärne ülaltooduga.
#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; )
Asjad, mida meeles pidada
- Kui oleme andnud parameetri vaikeväärtuse, peavad kõigil järgnevatel parameetritel olema ka vaikeväärtused. Näiteks,
// 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);
- Kui funktsiooni prototüübi asemel määratleme vaikimisi argumendid funktsiooni definitsioonis, siis tuleb funktsioon enne funktsiooni väljakutset defineerida.
// Invalid code int main() ( // function call display(); ) void display(char c = '*', int count = 5) ( // code )