Tässä opetusohjelmassa opimme C ++ -oletusargumentit ja niiden työskentelyn esimerkkien avulla.
C ++ - ohjelmoinnissa voimme antaa oletusarvot toimintoparametreille.
Jos funktio, jolla on oletusargumentit, kutsutaan välittämättä argumentteja, käytetään oletusparametreja.
Jos argumentit välitetään funktiota kutsuttaessa, oletusargumentit jätetään kuitenkin huomioimatta.
Oletusargumenttien käsittely

Ymmärrämme oletus argumenttien toiminnan yllä olevasta kuvasta:
- Kun
temp()
kutsutaan, toiminto käyttää molempia oletusparametreja. - Kun
temp(6)
kutsutaan, ensimmäisestä argumentista tulee6
samalla kun oletusarvoa käytetään toiselle parametrille. - Kun
temp(6, -2.3)
kutsutaan, molemmat oletusparametrit ohitetaan, mikä johtaai = 6
jaf = -2.3
. - Kun se
temp(3.4)
on välitetty, funktio käyttäytyy ei-toivotulla tavalla, koska toista argumenttia ei voida välittää ohittamatta ensimmäistä argumenttia.
Siksi3.4
välitetään ensimmäisenä argumenttina. Koska ensimmäinen argumentti on määriteltyint
, todellisuudessa välitettävä arvo on3
.
Esimerkki: Oletusargumentti
#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; )
Tuotos
Ei argumentteja läpäisty: *** Ensimmäinen argumentti hyväksytty: ### Molemmat argumentit hyväksytty: $$$$$
Näin tämä ohjelma toimii:
display()
kutsutaan välittämättä mitään argumentteja. Tässä tapauksessadisplay()
käyttää sekä oletusparametrejac = '*'
ettän = 1
.display('#')
kutsutaan vain yhdellä argumentilla. Tässä tapauksessa ensimmäisestä tulee'#'
. Toinen oletusparametrin = 1
säilytetään.display('#', count)
kutsutaan molemmilla argumenteilla. Tässä tapauksessa oletusargumentteja ei käytetä.
Voimme määrittää oletusparametrit myös itse toiminnon määrittelyssä. Alla oleva ohjelma vastaa yllä olevaa ohjelmaa.
#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; )
Muistettavaa
- Kun olemme antaneet parametrille oletusarvon, kaikilla seuraavilla parametreilla on oltava myös oletusarvot. Esimerkiksi,
// 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);
- Jos määritämme oletusargumentit funktion määritelmässä funktion prototyypin sijaan, funktio on määriteltävä ennen funktion kutsua.
// Invalid code int main() ( // function call display(); ) void display(char c = '*', int count = 5) ( // code )