Preopterećenje operatora je značajka računalnog programskog jezika koja omogućuje programeru da nadjača zadani operator. Kada je funkcija operatora preopterećena, može biti deklarirana s prilagođenim argumentima koji su različiti tipovi podataka od onih s kojima je operator prema zadanim postavkama mogao rukovati. Novi parametri mogu biti primitivni ili korisnički definirani tipovi. Unutar tijela nadjačavajuće funkcije, programer može manipulirati vrijednostima parametara po želji. Korištenjem preopterećenja operatora, programer može stvoriti intuitivne prečace za manipulaciju korisnički definiranim tipovima podataka ili modificirati način na koji se rukuje zadanim tipovima podataka.
Kada se kreiraju korisnički definirani tipovi podataka, ne postoji način za obavljanje jednostavnih operativnih zadataka, kao što je zbrajanje dvaju ili povećanje internih podataka korištenjem unarnog operatora povećanja s tipom podataka. Operatori, uključujući simbol zbrajanja, mogu se nadjačati tako da, ako se koriste kao binarni operatori između dva prilagođena tipa podataka, vraćaju korisnički definiran rezultat. Na isti način, unarni operator, poput operatora inkrementacije, može se nadjačati kako bi se povećala interna vrijednost unutar korisnički definiranog tipa.
Jednom kada je operator preopterećen, prevodilac mora donijeti odluku o tome što učiniti kada naiđe na preopterećeni operator. Prevoditelj odlučuje koju će akciju poduzeti na temelju toga koje vrste podataka se koriste kao operandi ili u sprezi s operatorom. Ako su operandi, koji su vrijednosti parametara za funkciju operatora, korisnički definirani tipovi podataka, prevodilac će odabrati preopterećenu funkciju koja ima parametre koji odgovaraju operandima koji se koriste.
Računalni jezici razlikuju se po načinu na koji dopuštaju ovu vrstu ad-hoc polimorfizma. Različiti jezici mogu dopustiti stvaranje novih prilagođenih operatora, preopterećenje svih ili nekih njegovih operatora ili uopće ne dopustiti preopterećenje operatora. C++, C#, PHP i Perl dopuštaju preopterećenje nekih od njihovih operatora. Preopterećenje operatora nije dopušteno u C, Javi i Javascriptu.
I preopterećenje operatora i općenito preopterećenje funkcija bili su predmet nekih rasprava. Neki tvrde da bi davanje programeru slobode mijenjanja načina na koji se operater ponaša moglo uvesti potencijal za stvaranje nenamjernih pogrešaka od strane drugih programera koji koriste prilagođeni kod. Suprotno stajalište predlaže da dopuštanje preopterećenja operatera daje programerima mogućnost stvaranja intuitivnog i sažetog koda koji će biti lakši za razumijevanje, manje košta za proizvodnju i smanjuje pogreške.