Dyskusja:C++/Przeciążanie funkcji
Dodaj tematRozdział krótki, ale ukończony. Dodawanie do rozdziału czegokolwiek mieszałoby tylko czytelnikowi w głowie, który i tak ma sporo do zapamiętania. Może dopisać w spisie treści 100% ukończenie?
- to napisałem ja :-) --Mythov 12:48, 12 sie 2007 (CEST)
- Według mnie brakuje dłuższego wyjaśnienia, po co jest przeciążanie funkcji, kiedy go używać a kiedy lepiej nie. No i np. wzmianka o tym, jak kompilator radzi sobie z przeciążonymi funkcjami. --Derbeth talk 12:53, 12 sie 2007 (CEST)
Funkcja na dole strony (obliczająca potęgę) nie liczy w rzeczywistości potęgi ( podstawa^wykladnik ) tylko podstawa^(2^wykladnik), nie wiem czy traktować to jako błąd, gdyż nie dotyczy zawartości merytorycznej tematu /Przeciążanie funkcji w C++/
Wyjatki na temat przeladowania.
[edytuj]Pisze to w dyskusji ponieważ jestem początkującym wikipedysta i nie chce zrobić błedów na stronie. Proszę o sprawdzenie błędów i ewentualne dodanie to książki. Jesli to co napisalem jest dobrze napisane to postaram sie opisac dopasowanie wywolan funckji.
Kiedy nie można przeładowac funckcji?
Typedef. Typedef tworzy inna nazwe na juz istniejacy typ. Nie tworzy nowego typu zatem nie mozna uzyc go przy przeladowaniu funkcji. Przykład:
typedef int typ; void funkcja(int argument); void funkcja(typ argument); // Ta deklaracja wywola blad kompilatora!
Enum. Kolejnym przypadkiem kiedy nie zadziala omawiany mechanizm jest typ enum. Dosc łatwo to wyjasnic. Typ enum to jakas wartosc int, i dlatego nie nadaje sie do przeladowania z typem int. Przyklad:
enum typ {jeden = 1, dwa}; void funkcja(int argument); void funkcja(typ argument); // Ta deklaracja wywola blad kompilatora!
Identyczne wywolania funckji. Nie da sie przeladowac funcji gdy dwie funckje da sie wywolac z identycznymi argumentami. Mozna odniesc wrazenie ze ten przypadek juz omawialismy a jednak. Tym razem chodzi tutaj o argumenty domniemane. Sprawa nie jest trudna i nie wymaga szczegółowego komentarza. Przyklad:
void funkcja(int argument); void funkcja(int argument, int drugi = 2); // Ta deklaracja wywola blad kompilatora!