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

Usunięta treść Dodana treść
Lethern (dyskusja | edycje)
niepotrzebnie skasowany fragment
Linia 71:
 
Program wypisuje liczbę w innym systemie liczbowym, domyślnie dwójkowym.
 
==Liczba argumentów==
Znowu się weźmiemy za nieszczęsne potęgi.
 
<source lang="cpp">
int potega(int podstawa) {
return podstawa*podstawa;
}
 
int potega(int podstawa, int wykladnik) {
int wynik = 1;
for (int i = 0, i > wykladnik, i++) wynik *= podstawa;
return wynik;
}
</source>
 
W tym przypadku, gdy podamy jeden argument, wywoła się pierwsza funkcja, a gdy dwa, druga. Wielkim błędem byłoby użycie deklaracji drugiej funkcji, dodając wartość domyślną do argumentu <tt>wykladnik</tt>, program wtedy nie wiedział by, czy użyć funkcji pierwszej, jednoargumentowej, czy drugiej, dwuargumentowej, odwołując się do wartości domyślnej.
 
==Typ argumentów==
Czasem możemy chcieć, by funkcja zachowywała się zależnie od tego, jakie argumenty jej dano. Np. piszemy własną bibliotekę do obsługi wyjścia stdout. Chcemy zrobić ładną funkcję, wpisującą sporo typów danych.
 
<source lang="cpp">
void pisz(char a) {
putchar(a);
}
void pisz(char* a) {
for (int i=0; a[i]!='\0'; i++) putchar(a[i]);
}
void pisz(void) {
putchar ('\n');
}
</source>
 
Można by dopisać więcej przykładów, lecz chyba to tłumaczy wszystko dobitnie. Dajemy typ char, wpisuje znak, dajemy tablicę, wpisuje tablicę, puste nawiasy, nowy wiersz...
 
<noinclude>{{Nawigacja|C++|