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