Condividi tramite


Restrizioni sulle funzioni in overload

Numerose restrizioni per un set accettabile di funzioni in overload:

  • Tutte le due funzioni in un insieme di funzioni in overload devono avere elenchi di argomenti differenti.

  • Eseguire l'overload delle funzioni con elenchi di argomenti degli stessi tipi, in base al tipo restituito da solo, è un errore.

    Specifici di Microsoft

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

Microsoft FINALE specifico

  • Le funzioni membro non possono essere sottoposte a overload unicamente in base a una che sono statici rispettivamente e non statica.

  • typedef le dichiarazioni non definiscono i nuovi tipi; introducono sinonimi per i tipi esistenti.Non influenzano il meccanismo di overload.Si consideri il codice seguente:

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

    le due funzioni precedenti hanno elenchi di argomenti identici.PSTR è sinonimo di tipo char *.Nel membro, il codice genera un errore.

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

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

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

    Per la moltiplicazione fra le matrici dimensionate, il secondo e tutte le dimensioni successive vengono considerate parte del tipo.Di conseguenza, vengono utilizzati nella distinzione tra 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