Überladen von Funktionen erspart das Erfinden neuer Funktionsnamen für Funktionen, die ähnliches tun:
int max(int a, int b);
int max(const int* ptr, int b);
int max(const intlist& l);
Überladen von Operatoren ermöglicht es, benutzerdefinierte Typen (fast) wie eingebaute Typen zu behandeln:
complex c1, c2;
...
c1 += c2;
cout << c1;