const
).
Un esempio vien elencato sotto:
#include <stdio.h>
void mostra(int valore)
{
printf("Intero: %d\n",
valore);
}
void mostra(double valore)
{
printf("Virgola mobile:
%lf\n", valore);
}
void mostra(char const *valore)
{
printf("Stringa: %s\n",
valore);
}
int main()
{
mostra(18);
mostra(3.1415);
mostra("Ciao Mondo!\n");
system ("PAUSE");
return 0;
}
Il compilatore C++ implementa il sovraccarico della funzione mostra in modo abbastanza semplice. Tutte le funzioni condividono lo stesso nome (in questo esempio mostra), il compilatore ( e di conseguenza il linker) usa nomi diversi. La conversione del nome nel file sorgente è chiamato 'compressione del nome'. Il compilatore C++ può convertire il prototipo void mostra(int) nel nome interno VmostraI, mentre un'analoga funzione char*, può essere chiamata VmostraCP. I nomi veri sono usati internamente dipendono dal compilatore e non sono rilevanti per il programmatore, eccetto quando vengono mostrati (es. la lista del contenuto di una libreria).
Alcuni punti da rispettare nel caso del sovraccarico di funzione:
- Non usare l'overloading per funzioni che svolgono compiti
concettualmente diversi. Nel caso della funzione mostra essi sono
correlati tra loro (stampa informazione a schermo).
- C++ non permette di creare funzioni che differiscono solo per
il valore restituito, il quale può essere ignorato dal
programmatore. Ad esempio l'istruzione printf(“Ciao...”);
non attribuisce alcun particolare valore di ritorno della funzione.
- E' possibile sovraccaricare una funzione che differisca solo
per il valore di const, in questo caso le classi possono
avere funzioni con identica lista parametri ma differiscono per il
valore di const attribuito. In questo caso solo una delle
funzioni può avere un valore const.
Nessun commento:
Posta un commento