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

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 )