Udostępnij za pośrednictwem


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] );
    

Zobacz też

Informacje

Omówienie logowania