Compartilhar via


Restrições de funções sobrecarregadas

Várias restrições determinam um conjunto aceitável de funções sobrecarregadas:

  • Quaisquer duas funções em um conjunto de funções sobrecarregadas devem ter listas de argumentos diferentes.

  • Sobrecarga de funções com listas de argumentos dos mesmos tipos, com base no tipo de retorno sozinho, é um erro.

    Específicos do Microsoft

Você pode sobrecarregar novo operador exclusivamente de acordo com o tipo de retorno — especificamente, de acordo com o o modificador de modelo de memória especificado.

Específicos do Microsoft final

  • Funções de membro não podem ser sobrecarregadas exclusivamente na Base de um deles sendo estático e outro não estático.

  • typedefdeclarações não definem novos tipos; eles introduzem sinônimos de tipos existentes.Elas não afetam o mecanismo de sobrecarga.Considere o código a seguir:

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

    As duas funções anteriores têm listas de argumentos idênticos.PSTRé um sinônimo para o tipo de char *.No escopo do membro, esse código gera um erro.

  • Os tipos enumerados são tipos distintos e podem ser usados para distinguir entre funções sobrecarregadas.

  • A matriz de tipos"de" e "ponteiro para" são considerados idênticos para fins de diferenciar as funções sobrecarregadas.Isso vale apenas para singularmente dimensioned arrays.Portanto, a seguir sobrecarregado de conflito de funções e gera uma mensagem de erro:

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

    Para multiplicar dimensioned arrays, as dimensões do segunda e todos os subseqüentes são consideradas parte do tipo.Portanto, eles são usados em fazer distinção entre funções sobrecarregadas:

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

Consulte também

Referência

Visão geral da sobrecarga