Poznaj C++ w$ godziny0085

Poznaj C++ w$ godziny0085



Funkcje 71

Przeciążanie funkcji

C++ pozwala na stworzenie więcej niż jednej funkcji o danej nazwie. Możliwość ta określana jest jako przeciążanie funkcji. Funkcje takie muszą różnić się listą parametrów, typami parametrów lub ich liczbą. Oto przykład:

int mojaFunkcja(int, int); int mojaFunkcja(long, long); int mojaFunkcja(long);

Funkcja mojaFunkcja () jest przeciążona z użyciem trzech różnych list parametrów. Dwie pierwsze różnią się typem parametrów, trzecia ma inną ich liczbę.

W przypadku przeciążanych funkcji, typ wartości zwracanej może być inny lub taki sam. Nie można jednak przeciążać funkcji opierając się jedynie na typie wartości zwracanej. Trzeba wykorzystać różne listy parametrów.

Przeciążanie funkcji określane jest również mianem polimorfizmu funkcji. Oznacza to, że funkcja ma wiele różnych form.

Polimorfizm pozwala na przeciążanie funkcji za pomocą różnych ich treści. Zmieniając liczbę lub typ parametrów, możesz nadać funkcjom te same nazwy. W momencie wywołania, parametry będą decydować, która z funkcji zostanie wykonana. Możesz np. stworzyć funkcję obliczającą wartość średnią dla liczb całkowitych (int), ułamkowych (double) bez konieczności tworzenia osobnych nazw dla różnych typów jak np.: SredniaCalkowita () czy SredniaUlamkowa () itp.

Załóżmy, że potrzebujesz funkcją podwajającą dowolną podaną wartość. Chcesz mieć możliwość podania zmiennej typu int, long, float i double. Bez przeciążania funkcji musiał byś napisać cztery funkcje o różnych nazwach:

int Podwajanielnt(int); long PodwajanieLong(long); float PodwajanieFloat(float); double PodwajanieDouble(double);

Natomiast z użyciem przeciążenia możesz użyć następującej deklaracji:

int Podwajanie (int) ; long Podwajanie(long); float Podwajanie(float); double Podwajanie(double);

Łatwiej będzie takie funkcje czytać i wykorzystywać. Nie musisz się martwić, którą funkcję wywołać. Musisz jedynie przekazać wartość. Program automatycznie wykona właściwą funkcję.

Funkcje wewnętrzne (inline)

Normalnie, kiedy definiujesz funkcję, kompilator tworzy w pamięci jeden zestaw instrukcji. Kiedy wywołujesz funkcję program przechodzi do wykonania tych instrukcji. Kiedy funkcja się kończy, program wraca do następnej instrukcji po wywołaniu.

Przeciążanie funkcji

C++ pozwala na stworzenie więcej niż jednej funkcji o danej nazwie. Możliwość ta określana jest jako przeciążanie funkcji. Funkcje takie muszą różnić się listą parametrów, typami parametrów lub ich liczbą. Oto przykład:

int mojaFunkcja(int, int); int mojaFunkcja(long, long); int mojaFunkcja(long);

Funkcja mojaFunkcja () jest przeciążona z użyciem trzech różnych list parametrów. Dwie pierwsze różnią się typem parametrów, trzecia ma inną ich liczbę.

W przypadku przeciążanych funkcji, typ wartości zwracanej może być inny lub taki sam. Nie można jednak przeciążać funkcji opierając się jedynie na typie wartości zwracanej. Trzeba wykorzystać różne listy parametrów.

Przeciążanie funkcji określane jest również mianem polimorfizmu funkcji. Oznacza to, że funkcja ma wiele różnych form.

Polimorfizm pozwala na przeciążanie funkcji za pomocą różnych ich treści. Zmieniając liczbę lub typ parametrów, możesz nadać funkcjom te same nazwy. W momencie wywołania, parametry będą decydować, która z funkcji zostanie wykonana. Możesz np. stworzyć funkcję obliczającą wartość średnią dla liczb całkowitych (int), ułamkowych (double) bez konieczności tworzenia osobnych nazw dla różnych typów jak np.: SredniaCalkowita () czy SredniaUlamkowa () itp.

Załóżmy, że potrzebujesz funkcją podwajającą dowolną podaną wartość. Chcesz mieć możliwość podania zmiennej typu int, long, float i double. Bez przeciążania funkcji musiał byś napisać cztery funkcje o różnych nazwach:

int Podwajanielnt (int) ; long PodwajanieLong(long); float PodwajanieFloat(float); double PodwajanieDouble(double);

Natomiast z użyciem przeciążenia możesz użyć następującej deklaracji:

int Podwajanie (int) ; long Podwajanie(long); float Podwajanie(float); double Podwajanie(double);

Łatwiej będzie takie funkcje czytać i wykorzystywać. Nie musisz się martwić, którą funkcję wywołać. Musisz jedynie przekazać wartość. Program automatycznie wykona właściwą funkcję.

Funkcje wewnętrzne (inline)

Normalnie, kiedy definiujesz funkcję, kompilator tworzy w pamięci jeden zestaw instrukcji. Kiedy wywołujesz funkcję program przechodzi do wykonania tych instrukcji. Kiedy funkcja się kończy, program wraca do następnej instrukcji po wywołaniu.


Wyszukiwarka

Podobne podstrony:
Poznaj C++ w$ godziny0089 Funkcje 75 Kiedy wartość jest odkładana na stos, to jest umieszczana w kom
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$ godziny0081 Funkcje 67 Program wraca do funkcji main(), do linii 13. Okazuje się, że w
Poznaj C++ w$ godziny0083 Funkcje 69Parametry domyślne Do każdego zadeklarowanego w prototypie i def
Poznaj C++ w$ godziny0087 Funkcje 73 27:    int RazyDwa(int zrodło) 28: { 29:  &
Poznaj C++ w$ godziny0001 Gdy masz czas tylko na właściwe rozwiązania... Intersoftlcind Gdy masz cza
Cykl życia serwisu internetowego Ciąg wyodrębnionych, wzajemnie spójnych faz pozwalających na stworz
DSCN0273 OSZACOWANIE (ASSESSMENT): Wszystkie zebrane informacje pozwalają na stworzenie obiektywnej
DSCF7164 (2) Logistyka w usługach Niewątpliwie stosowanie metody 4PL, pozwala na korzystanie z jedne
IMGU14 Żywienie SM tym pamiętać, te dzieci na wycieczkach i w podróży jędzę na ogół więcej niż norma
DIAGNOSTYKA Magazyn Grupy(+)Din=na= l -J laboratoria .. .więcej niż wynik Nr 1(5)/ 2017 egzemplarz
skanuj0007 (56) w jej pyszczku - ale wskazuje na nic więcej niż preferencję do uwolnienia się od sta
§40 1.    Jeżeli student podejmuje studia na więcej niż jednej specjalności, obowiąza
sprawca podlega de facto więcej niż jednej osobie. Na gruncie art. 430 można mieć tylko 1 przełożone

więcej podobnych podstron