C++/Przeciążanie funkcji: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
Nie podano opisu zmian |
|||
Linia 7:
Oto przykłady funkcji przeciążonych:
<
void funkcja(int argument);
void funkcja(char* argument);
Linia 13:
// int funkcja(int argument); //niedozwolone, funkcje różnią się tylko zwracanym typem
int funkcja(bool argument); //dozwolone
</
Czasami kompilator może zabronić przeładowania, gdy uzna, że typy argumentów są zbyt podobne. Może tak się dziać na przykład w przypadku, gdy:
Linia 19:
* użyjemy argumentów domyślnych.
<
void funkcja(int arg1, int arg2 = 0);
void funkcja(int arg1); //to ta sama funkcja, zostanie zgłoszony błąd
</
Kompilator obsługuje przeciążanie przez dodanie do nazwy każdej z przeciążonych funkcji specjalnego identyfikatora, który związany jest z liczbą i typem argumentów - tak więc po etapie kompilacji wszystkie funkcje mają unikalne nazwy.
Linia 29:
== Zastosowanie ==
Przeciążenie funkcji najczęściej stosuje się przy np. potęgowaniu:
<
int pot(int podstawa, int wykladnik)
{
Linia 44 ⟶ 43:
return wynik;
}
void pot(int & podstawa, int wykladnik) // przeładowana funkcja II: nie zwraca danych tylko modyfikuje podstawę która jest podana przez referencję
{
Linia 49:
for(int i = 0; i < wykladnik; i++) wynik=podstawa*wynik;
}
</
<noinclude>{{Nawigacja|C++|
|