W tym samouczku nauczymy się domyślnych argumentów C ++ i ich pracy na przykładach.
W programowaniu w C ++ możemy podać domyślne wartości parametrów funkcji.
Jeśli wywoływana jest funkcja z domyślnymi argumentami bez przekazywania argumentów, używane są domyślne parametry.
Jeśli jednak argumenty są przekazywane podczas wywoływania funkcji, domyślne argumenty są ignorowane.
Praca z domyślnymi argumentami

Możemy zrozumieć działanie domyślnych argumentów z powyższego obrazu:
- Gdy
temp()
jest wywoływana, funkcja używa obu parametrów domyślnych. - Gdy
temp(6)
jest wywoływana, pierwszy argument staje się,6
podczas gdy wartość domyślna jest używana dla drugiego parametru. - Gdy
temp(6, -2.3)
jest wywoływana, oba parametry domyślne są zastępowane, w wyniku czegoi = 6
if = -2.3
. - Gdy
temp(3.4)
jest przekazywane, funkcja zachowuje się w niepożądany sposób, ponieważ nie można przekazać drugiego argumentu bez przekazania pierwszego argumentu.
Dlatego3.4
jest przekazywany jako pierwszy argument. Ponieważ pierwszy argument został zdefiniowany jakoint
, faktycznie przekazywana wartość to3
.
Przykład: domyślny argument
#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; )
Wynik
Nie przekazano argumentu: *** Przekazano pierwszy argument: ### Przekazano oba argumenty: $$$$$
Oto jak działa ten program:
display()
jest wywoływana bez przekazywania żadnych argumentów. W takim przypadkudisplay()
używa zarówno domyślnych parametrów, jakc = '*'
in = 1
.display('#')
wywoływana jest tylko z jednym argumentem. W tym przypadku pierwszy staje się'#'
. Drugi parametr domyślnyn = 1
zostaje zachowany.display('#', count)
jest wywoływana z oboma argumentami. W takim przypadku argumenty domyślne nie są używane.
Możemy również zdefiniować parametry domyślne w samej definicji funkcji. Poniższy program jest odpowiednikiem powyższego.
#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; )
Rzeczy do zapamiętania
- Gdy podamy wartość domyślną parametru, wszystkie kolejne parametry również muszą mieć wartości domyślne. Na przykład,
// 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);
- Jeśli definiujemy domyślne argumenty w definicji funkcji zamiast w prototypie funkcji, to funkcja musi być zdefiniowana przed wywołaniem funkcji.
// Invalid code int main() ( // function call display(); ) void display(char c = '*', int count = 5) ( // code )