Poznaj C++ w$ godziny0083

Poznaj C++ w$ godziny0083



Funkcje 69

Parametry domyślne

Do każdego zadeklarowanego w prototypie i definicji funkcji parametru, funkcja wywołująca musi pobrać wartość zgodną z zadeklarowanym typem. Jeśli masz funkcję zadeklarowaną w następujący sposób:

long mojaFunkcja(int);

to musisz przekazywać do niej wartość całkowitą. Jeśli definicja jest niezgodna z prototypem, lub jeśli wartość przekazywana nie będzie całkowita to kompilator zasygnalizuje błąd.

Od tej reguły jest jeden wyjątek. Jeśli w prototypie zadeklarujemy domyślną wartość dla parametru, to gdy nie określimy danego argumentu, zostanie mu przypisana automatycznie wartość domyślna. Odpowiednia deklaracja powinna wyglądać następująco:

long mojaFunkcja(int x = 50);

Definicja funkcji nie zmienia się. Nagłówek definicji nadal będzie miał postać: long mojaFunkcja (int x)    // nie ma średnika!

Teraz, gdy wywołamy funkcję bez określenia wartości argumentu to kompilator automatycznie nada mu wartość 50. Nazwa parametru z wartością domyślną nie musi być taka sama jak w nagłówku definicji, wartość domyślna jest przypisywana na podstawie pozycji w liście parametrów, a nie według nazwy.

Wartości domyślne można nadawać kilku parametrom funkcji. Jest tu jednak pewne ograniczenie, jeśli parametr nie ma określonej wartości domyślnej, to żaden z poprzedzających go parametrów, również nie może posiadać wartości domyślnej.

Jeśli prototyp funkcji wygląda tak:

long mojaFunkcja (int Parami, int Param2, int Param3);

to parametrowi Param2 możesz przypisać wartość domyślną wtedy i tylko wtedy gdy przypiszesz wartość domyślną do Param3. Podobnie, gdy chcesz przypisać wartość domyślną do Parami to musisz uwzględnić parametry Param2 i Param3 i również nadać im wartości domyślne. Przykład programu wykorzystujący wartości domyślne prezentujemy poniżej.

Listing 5.5. Domyślne wartości parametrów.

1:    // Listing 5.5 - demonstracja ubycia

2:    // wartoceci domyoelnych dla parametrów

3:

4:    #include <iostream.h>

5:

6:    int ObjetoscKostki(int dlugosc, int szerokość = 25, int wysokosc =

Parametry domyślne

Do każdego zadeklarowanego w prototypie i definicji funkcji parametru, funkcja wywołująca musi pobrać wartość zgodną z zadeklarowanym typem. Jeśli masz funkcję zadeklarowaną w następujący sposób:

long mojaFunkcja(int);

to musisz przekazywać do niej wartość całkowitą. Jeśli definicja jest niezgodna z prototypem, lub jeśli wartość przekazywana nie będzie całkowita to kompilator zasygnalizuje błąd.

Od tej reguły jest jeden wyjątek. Jeśli w prototypie zadeklarujemy domyślną wartość dla parametru, to gdy nie określimy danego argumentu, zostanie mu przypisana automatycznie wartość domyślna. Odpowiednia deklaracja powinna wyglądać następująco:

long mojaFunkcja(int x = 50);

Definicja funkcji nie zmienia się. Nagłówek definicji nadal będzie miał postać: long mojaFunkcja(int x)    // nie ma średnika!

Teraz, gdy wywołamy funkcję bez określenia wartości argumentu to kompilator automatycznie nada mu wartość 50. Nazwa parametru z wartością domyślną nie musi być taka sama jak w nagłówku definicji, wartość domyślna jest przypisywana na podstawie pozycji w liście parametrów, a nie według nazwy.

Wartości domyślne można nadawać kilku parametrom funkcji. Jest tu jednak pewne ograniczenie, jeśli parametr nie ma określonej wartości domyślnej, to żaden z poprzedzających go parametrów, również nie może posiadać wartości domyślnej.

Jeśli prototyp funkcji wygląda tak:

long mojaFunkcja (int Parami, int Param2, int Param3);

to parametrowi Param2 możesz przypisać wartość domyślną wtedy i tylko wtedy gdy przypiszesz wartość domyślną do Param3. Podobnie, gdy chcesz przypisać wartość domyślną do Parami to musisz uwzględnić parametry Param2 i Param3 i również nadać im wartości domyślne. Przykład programu wykorzystujący wartości domyślne prezentujemy poniżej.

Listing 5.5. Domyślne wartości parametrów.

1:    // Listing 5.5 - demonstracja ubycia

2:    // wartooeci domycelnych dla parametrów

3:

4:    (tinclude <iostream.h>

5:

6:    int ObjetoscKostki(int dlugosc, int szerokość = 25, int wysokosc =

~D;

7:


Wyszukiwarka

Podobne podstrony:
Poznaj C++ w$ godziny0081 Funkcje 67 Program wraca do funkcji main(), do linii 13. Okazuje się, że w
Poznaj C++ w$ godziny0073 Funkcje 59Rysunek 5.2 Funkcje 59 Prototyp, pod względem typu wartości zwra
Poznaj C++ w$ godziny0075 Funkcje 61Rysunek 5.3 typ zwracanej wartości
Poznaj C++ w$ godziny0077 Funkcje 63EFEKT DZIAŁANIA: Podaj temperaturę w stopniach Fehrenheit-a: 212
Poznaj C++ w$ godziny0079 Funkcje 65Funkcje jako parametry innych funkcji Mimo że można używać funkc
Poznaj C++ w$ godziny0085 Funkcje 71Przeciążanie funkcji C++ pozwala na stworzenie więcej niż jednej
Poznaj C++ w$ godziny0087 Funkcje 73 27:    int RazyDwa(int zrodło) 28: { 29:  &
Poznaj C++ w$ godziny0089 Funkcje 75 Kiedy wartość jest odkładana na stos, to jest umieszczana w kom
Poznaj C++ w$ godziny0097 Proste klasy 83Dostęp do zasobów klasy Jeśli masz zdefiniowany obiekt Kot
Poznaj C++ w$ godziny0142 Wskaźniki 131Przypisywanie adresu do wskaźnika Jak już mówiliśmy, każda zm
Poznaj C++ w$ godziny0043 Zmienne i stałe 27Definiowanie zmiennych Zmienne tworzy się i definiuje si
Poznaj C++ w$ godziny0244 236Godzina 16 Dlatego, funkcja Pies:: Machaj Ogonem () ma dostęp do zmienn
Poznaj C++ w$ godziny0035 Program w C++ 19Funkcje ■ain() jest funkcją specjalną. Jest automatycznie
Poznaj C++ w$ godziny0072 58 Godzina 5 Rysunek 5.1 W momencie wywołania funkcji program przechodzi d
Poznaj C++ w$ godziny0086 72 Godzina 5 Kiedy wywołasz funkcję 10 razy, to program tyle samo razy „sk
Poznaj C++ w$ godziny0091 76 Godzina 5 Definicja funkcji musi być zgodna, co do wartości zwracanej,
Poznaj C++ w$ godziny0185 174 Godzina 12 52:    // FunkcjaDruga pobiera referencje do
Poznaj C++ w$ godziny0197 188 Godzina 13Wartości domyślne czy przeciążanie funkcji Programy 13.1 i 1

więcej podobnych podstron