Freigeben über


Einschränkungen bei überladenen Funktionen

Mehrere Einschränkungen steuern eine akzeptable Gruppe von überladenen Funktionen:

  • Zwei beliebige Funktionen in einer Gruppe von überladenen Funktionen müssen unterschiedliche Argumentlisten haben.

  • Das Überladen von Funktionen mit Argumentlisten der gleichen Typen auf alleiniger Grundlage des Rückgabetyps ist ein Fehler.

    Microsoft-spezifisch

Sie können operator new nur auf der Grundlage des Rückgabetyps überladen – auf der Grundlage des angegebenen Modifizierers für Speichermodelle.

END Microsoft-spezifisch

  • Memberfunktionen können nicht allein auf der Grundlage, dass eine statisch und die andere nicht statisch ist, überladen werden.

  • typedef-Deklarationen definieren keine neue Typen. Sie führen Synonyme für vorhandene Typen ein. Sie wirken sich nicht auf den Mechanismus zum Überladen aus. Betrachten Sie folgenden Code:

    typedef char * PSTR;
    
    void Print( char *szToPrint );
    void Print( PSTR szToPrint );
    

    Die vorhergehenden zwei Funktionen verfügen über identische Argumentlisten. PSTR ist ein Synonym für den Typ char *. Im Memberbereich generiert dieser Code einen Fehler.

  • Aufgelistete Typen sind verschiedene Typen und können verwendet werden, um zwischen überladenen Funktionen zu unterscheiden.

  • Die Typen "Array von" und "Zeiger auf" gelten als identisch, damit zwischen überladenen Funktionen unterschieden werden kann. Dies gilt nur für eindimensionale Arrays. Daher verursachen die folgenden überladenen Funktionen einen Konflikt und generieren eine Fehlermeldung:

    void Print( char *szToPrint );
    void Print( char szToPrint[] );
    

    Für mehrdimensionale Arrays gelten die zweite und alle nachfolgenden Dimensionen als Teil des Typs. Deshalb werden sie beim Unterscheiden zwischen überladenen Funktionen verwendet:

    void Print( char szToPrint[] );
    void Print( char szToPrint[][7] );
    void Print( char szToPrint[][9][42] );
    

Siehe auch

Referenz

Übersicht über Überladen