Podręcznik
Wersja podręcznika: 1.0
Data publikacji: 01.01.2022 r.
8. Funkcje
8.1. Deklaracja i definicja funkcji
Jak już wspomniałem, rozróżnia się deklarację i definicję funkcji.
Deklaracja wygląda następująco:
< modyfikator > < typ_zwracany > < nazwa >( < typ1 > < arg1 >, < typ2 > < arg2 > <...> );
Definicje funkcji wyglądają bardzo podobnie, z tym że zamiast ; kończącego deklarację mamy nawiasy klamrowe { } zawierające "ciało" (ang. body) funkcji.
< modyfikator > < typ_zwracany > < nazwa >( < typ1 > < arg1 >, < typ2 > < arg2 > <...> ) {
< instrukcja 1 >;
< instrukcja 2 >;
...
< instrukcja n >;
return wartosc_zwracana;
}
W nagłówku funkcji występują następujące elementy:
- modyfikator - opcjonalny modyfikator funkcji, omówię go nieco później.
- typ_zwracany – typ wartości zwracanej przez funkcję, jeśli jej wywołanie zostało umieszczone w wyrażeniu. Wynik jest zwracany poprzez wywołanie instrukcji return z argumentem będącym zwracaną wartością. Jeśli funkcja nie zwraca żadnej wartości, typ zwracany należy zdefiniować jako void, i konsekwentnie return nie powinien mieć podanego żadnego argumentu lub argument typu void.
- nazwa – identyfikator, przy użyciu którego będzie wywoływana funkcja . Wbrew pozorom, w C++ nazwa nie identyfikuje jednoznacznie funkcji. Poza nazwą do identyfikacji jest również wykorzystana lista typów argumentów, dzięki czemu możliwe jest opisane dalej przeciążanie nazw funkcji.
- lista par: typ_argumentu nazwa_argumentu oddzielona przecinkami. Nazwa jest opcjonalna – nie musi występować w deklaracji bez jakichkolwiek konsekwencji, i nie musi też występować w definicji, tyle że wtedy taki argument nazywamy nienazwanym, i nie możemy go wykorzystywać w instrukcjach w ciele funkcji. Nazwa też nie musi się zgadzać w definicji i deklaracji, choć takie zachowanie świadczy o niechlujnym przygotowaniu kodu.
- argumenty funkcji mogą mieć wartości domyślne (domniemane). Wartości te są wpisywane w deklaracji funkcji, przy czym argumenty domniemane muszą być podane na końcu listy. Przy wywołaniu funkcji można pominąć tylko argumenty z końca listy, które mają wartości domyślne.
- Zapis (...) oznacza dowolną liczbę argumentów.