Ograniczenia funkcji przeciążenia
Kilka ograniczeń kieruje dopuszczalnym zbiorem przeciążonych funkcji:
Dowolne dwie funkcje w zbiorze przeciążonych funkcji muszą mieć różne listy argumentów.
Przeciążanie funkcji za pomocą list argumentów tych samych typów, oparte tylko na typie zwracanym, jest błędem.
Specyficzne dla firmy Microsoft
Można doprowadzić do przeciążenia operatora new wyłącznie w oparciu o zwracany typ — w szczególności na podstawie określonego modyfikatora modelu pamięci.
KONIEC informacji specyficznych dla firmy Microsoft
Funkcje składowe nie mogą być przeciążone wyłącznie na podstawie tego, że jedna jest statyczna, a inna nie.
Deklaracje typedef nie definiują nowych typów; wprowadzają one synonimy dla istniejących typów.Nie wpływają one na mechanizm przeciążenia.Rozważ następujący kod.
typedef char * PSTR; void Print( char *szToPrint ); void Print( PSTR szToPrint );
Dwie powyższe funkcje mają identyczne listy argumentów.PSTR jest synonimem typu char *.W zakresie elementu członkowskiego, kod ten generuje błąd.
Typy wyliczeniowe są różnymi typami i mogą służyć do rozróżniania przeciążonych funkcji.
Typy "tablica" i "wskaźnik do" uważa się za identyczne do celów rozróżniania przeciążonych funkcji.Dotyczy to tylko tablic jednowymiarowych.W związku z tym, następujące funkcje przeciążone znajdują się w konflikcie i generują komunikat o błędzie:
void Print( char *szToPrint ); void Print( char szToPrint[] );
Dla tablic wielowymiarowych, drugi i wszystkie kolejne wymiary są uważane za część tego typu.W związku z tym, są one stosowane w rozróżnianiu przeciążonych funkcji:
void Print( char szToPrint[] ); void Print( char szToPrint[][7] ); void Print( char szToPrint[][9][42] );