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