C- kielessä jokaiselle eri tyypille tehdylle funktiolla on keksittävä eri nimi, vaikka toiminta ja tarkoitus olisi sama. C++ - kielessä voi saman niminen funktio esiintyä useassa eri tarkoituksessa, mikäli kunkin funktion eri muodossa parametrilistat ovat erilaiset ainakin yhden tyypin kohdalta:
/* OVERLOAD.CPP */
#include <stdio.h>
void tulosta(int i)
{
printf("Kokonaisluku on %d\n",i);
}
void tulosta(double d)
{
printf("Reaaliluku on %4.2lf\n",d);
}
int main(void)
{
tulosta(3); tulosta(3.2);
return 0;
}
Käytännössä kääntäjä nimeää
funktion eri muodot eri nimillä funktiossa olevien tyyppien mukaan (ks. C-
funktioiden käyttö). Kun funktion kutsu
käännetään, etsitään kutsussa olevien parametrien
tyypit ja näiden perusteella yritetään päätellä
mitä funktion muotoa todella halutaan kutsua.Jos edellä olisi kirjoitettu vain funktiot ja kutsu:
tulosta(double d) ... tulosta(float f) ... tulosta(3); ...ei kääntäjä tietäisi kummaksiko 3 muutettaisiin; doubleksi vai floatiksi.