Mikä on operaattorin ylikuormitus?

Operaattorin ylikuormitus on tietokoneohjelmointikielen ominaisuus, jonka avulla ohjelmoija voi ohittaa oletusoperaattorin. Kun operaattoritoiminto on ylikuormitettu, se voidaan ilmoittaa mukautetuilla argumenteilla, jotka ovat eri tyyppisiä kuin mitä operaattori pystyi käsittelemään oletusarvoisesti. Uudet parametrit voivat olla primitiivisiä tai käyttäjän määrittämiä tyyppejä. Ohjaustoiminnon rungossa ohjelmoija voi muokata parametriarvoja halutulla tavalla. Käyttämällä operaattorin ylikuormitusta ohjelmoija voi luoda intuitiivisia pikavalintoja käyttäjän määrittämien tietotyyppien käsittelyyn tai muokata oletustietotyyppien käsittelyä.

Kun luodaan käyttäjän määrittämiä tietotyyppejä, ei ole mitään keinoa tehdä yksinkertaisia ​​operatiivisia tehtäviä, kuten lisätä kaksi niistä yhteen tai lisätä sisäistä dataa käyttämällä datatyypin unary -lisäysoperaattoria. Operaattorit, mukaan lukien lisäyssymboli, voidaan ohittaa siten, että jos niitä käytetään binäärisinä operaattoreina kahden mukautetun tietotyypin välillä, he palauttavat käyttäjän määrittämän tuloksen. Samalla tavalla epäyhtenäinen operaattori, kuten lisäysoperaattori, voidaan ohittaa lisätäkseen sisäistä arvoa käyttäjän määrittämässä tyypissä.

Kun operaattori on ylikuormitettu, kääntäjän on tehtävä päätös siitä, mitä tehdä, kun se kohtaa ylikuormitetun operaattorin. Kääntäjä päättää oikeat toimenpiteet sen perusteella, mitä tietotyyppejä käytetään operandeina tai yhdessä operaattorin kanssa. Jos operandit, jotka ovat operaattoritoiminnon parametriarvoja, ovat käyttäjän määrittämiä tietotyyppejä, kääntäjä valitsee ylikuormitetun funktion, jolla on käytettäviä operandeja vastaavat parametrit.

Tietokoneiden kielet vaihtelevat siinä, miten ne sallivat tällaisen ad hoc -polymorfismin. Eri kielet voivat sallia uusien mukautettujen operaattoreiden luomisen, kaikkien tai joidenkin operaattoreiden ylikuormituksen tai eivät sallia operaattorin ylikuormitusta ollenkaan. C ++, C#, PHP ja Perl mahdollistavat joidenkin operaattoreiden ylikuormituksen. Operaattorin ylikuormitus ei ole sallittu C-, Java- ja Javascript -versioissa.

Sekä operaattorin ylikuormitus että toimintojen ylikuormitus yleensä ovat olleet keskustelun aiheena. Jotkut väittävät, että jos annat ohjelmoijalle vapauden muuttaa käyttäytymistapoja, se voi aiheuttaa tahattomia virheitä muille ohjelmoijille, jotka käyttävät mukautettua koodia. Vastakkainen näkökulma ehdottaa, että operaattorin ylikuormituksen salliminen antaa ohjelmoijille mahdollisuuden luoda intuitiivista ja ytimekästä koodia, joka on helpompi ymmärtää, maksaa vähemmän ja tuottaa vähemmän virheitä.