Funkcje

Funkcje stanowią podstawowy element programu w C++. Każda funkcja zawiera fragment programu, który można wykonywać niezależnie od pozostałej części programu. Każdy program musi zawierać dokładnie jedną funkcję o nazwie main, od której rozpoczyna się wykonanie programu. Działanie funkcji może zależeć od podanych parametrów, funkcja może też zwrócić wynik, który będzie dostępny w miejscu wywołania.

Definicja funkcji

Definicja funkcji ma następującą postać:
typ nazwa(lista_parametrów) {
   lista_instrukcji
}
gdzie

Deklaracja funkcji

Dozwolone są również deklaracje funkcji:

typ nazwa(lista_parametrów);
Zawierają one jedynie informację, że nazwa jest nazwą funkcji (o zadanym typie i liście parametrów). Definicja funkcji powinna być podana później. Przed pierwszym użyciem funkcji musi się znajdować jej deklaracja bądź definicja.

Przykłady:

void a();
funkcja o nazwie a, która nie ma parametrów i nie zwraca żadnej wartości.
int qqq();
funkcja o nazwie qqq bez parametrów, zwracająca wartość typu int.
double x(int a, char c, double tt);
funkcja o nazwie x, zwracająca wartość typu double. Wymaga trzech parametrów: pierwszego typu int, drugiego typu char, a trzeciego typu double.

Wywołanie funkcji

Każdą funkcję można wywołać przez

nazwa_funkcji(wartość_1, wartość_2, ...,wartość_n);
Wywołanie funkcji ma następujący efekt:

Przykłady wywołań funkcji:

a();
n=qqq();
y=21.3*x(a, 'W', z/1.5);
Uwagi:

Przekazanie parametru przez zmienną

Jeśli T jest typem, to T& jest typem referencyjnym wskazującym na T. Jeśli parametr funkcji jest typu referencyjnego, to w funkcji nie tworzy się kopia zmiennej - rachunki wykonywane są na zmiennej podanej jako argument.

Przykład.

int zwieksz(int& n) {
   n=n+1;
   return n;
}

int main() {
   int a;
   int b;
   a=4;
   b=zwieksz(a);
   cout << "a=" << a << ", b=" << b << endl;
}
Po uruchomieniu programu na ekranie pojawi się:
a=5, b=5
Gdyby parametr funkcji zwieksz nie był referencją (tj. gdyby pominąć znak & w nagłówku), wynik byłby następujący:
a=4, b=5

Uwaga: Jeśli parametr funkcji jest typu referencyjnego, to w wywołaniu musimy podać zmienną, a nie wartość. Np. w powyższym przykładzie wywołanie zwieksz(3); jest niepoprawne.

Kiedy używać referencji?