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.