C++/Przeciążanie funkcji: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Gang65 (dyskusja | edycje)
Nie podano opisu zmian
Linia 7:
Oto przykłady funkcji przeciążonych:
 
<presource classlang="lang-cpp">
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
</presource>
 
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.
 
<presource classlang="lang-cpp">
void funkcja(int arg1, int arg2 = 0);
void funkcja(int arg1); //to ta sama funkcja, zostanie zgłoszony błąd
</presource>
 
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:
<codesource lang="Cppcpp">
<pre>
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;
}
</presource>
</code>
 
 
<noinclude>{{Nawigacja|C++|