Kaj je preobremenitev operaterja?

Preobremenitev operaterja je funkcija računalniškega programskega jezika, ki omogoča programerju, da preglasi privzeti operater. Ko je funkcija operaterja preobremenjena, je lahko razglašena z argumenti po meri, ki so različni tipi podatkov, kot jih je operater privzeto sposoben obdelati. Novi parametri so lahko primitivni ali uporabniško definirani tipi. Znotraj telesa preglasitvene funkcije lahko programer po želji manipulira z vrednostmi parametrov. Z uporabo preobremenitve operaterja lahko programer ustvari intuitivne bližnjice za manipuliranje uporabniško določenih tipov podatkov ali spremeni način ravnanja s privzetimi tipi podatkov.

Ko so ustvarjeni uporabniško definirani tipi podatkov, ni mogoče izvesti preprostih operativnih nalog, kot je seštevanje dveh ali povečevanje notranjih podatkov z uporabo operatorja unarnega prirastka s tipom podatkov. Operatorje, vključno s simbolom seštevanja, je mogoče preglasiti, tako da, če se uporabljajo kot binarni operaterji med dvema tipoma podatkov po meri, vrnejo uporabniško definiran rezultat. Na enak način se lahko unarni operator, kot je inkrementacijski operator, preglasi, da se poveča notranja vrednost znotraj uporabniško definiranega tipa.

Ko je operater preobremenjen, se mora prevajalnik odločiti, kaj storiti, ko naleti na preobremenjenega operaterja. Prevajalnik se odloči za ustrezno dejanje glede na to, katere vrste podatkov se uporabljajo kot operandi ali v povezavi z operaterjem. Če so operandi, ki so vrednosti parametrov za funkcijo operaterja, uporabniško definirani tipi podatkov, bo prevajalnik izbral preobremenjeno funkcijo, ki ima parametre, ki se ujemajo z operandi, ki se uporabljajo.

Računalniški jeziki se razlikujejo glede na to, kako dopuščajo to vrsto ad-hoc polimorfizma. Različni jeziki lahko dovolijo ustvarjanje novih operaterjev po meri, preobremenitev vseh ali nekaterih njegovih operaterjev ali pa sploh ne dovolijo preobremenitve operaterja. C++, C#, PHP in Perl dovoljujejo preobremenitev nekaterih njihovih operaterjev. Preobremenitev operaterja ni dovoljena v C, Javi in ​​Javascriptu.

Tako preobremenitev operaterja kot preobremenitev funkcij na splošno sta bili predmet nekaterih razprav. Nekateri trdijo, da bi lahko programerju omogočili svobodo spreminjanja načina obnašanja operaterja, da bi lahko drugi programerji, ki uporabljajo prilagojeno kodo, ustvarili nenamerne napake. Nasprotno stališče predlaga, da omogočanje preobremenitve operaterjev daje programerjem zmožnost ustvarjanja intuitivne in jedrnate kode, ki bo lažje razumeti, stane manj za izdelavo in zmanjša napake.