Condividi tramite


Limitazioni sulle funzioni in overload

Un set di funzioni in overload accettabile è regolato da numerose restrizioni:

  • È necessario che due funzioni presenti in un set di funzioni in overload abbiano elenchi di argomenti differenti.

  • Eseguire l'overload di funzioni con elenchi di argomenti dello stesso tipo, basandosi solo sul tipo restituito, è un errore.

    Sezione specifica Microsoft

È possibile eseguire l'overload di operator new unicamente sulla base del tipo restituito; in particolare, in base al modificatore del modello di memoria specificato.

Fine sezione specifica Microsoft

  • Le funzioni membro non possono essere sottoposte a overload unicamente perché una è statica e l'altra non statica.

  • Le dichiarazioni typedef non definiscono nuovi tipi, ma introducono sinonimi per i tipi esistenti. Esse non influiscono sul meccanismo di overload. Esaminare il codice seguente:

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

    Le due funzioni precedenti hanno elenchi di argomenti identici. PSTR è un sinonimo del tipo char *. Nell'ambito del membro, questo codice genera un errore.

  • I tipi enumerati sono tipi distinti e possono essere utilizzati per distinguere le funzioni in overload.

  • I tipi "matrice di" e "puntatore a" sono considerati identici, ai fini della distinzione tra le funzioni in overload. Ciò è valido solo per le matrici dimensionate singolarmente. Di conseguenza, le seguenti funzioni in overload sono in conflitto e generano un messaggio di errore:

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

    Nella moltiplicazione delle matrici dimensionate, la seconda dimensione e tutte le successive sono considerate parte del tipo. Di conseguenza, vengono utilizzate per distinguere le funzioni in overload:

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

Vedere anche

Riferimenti

Cenni preliminari sull'overload