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