Ü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;