Wat is operatoroverbelasting?
Overbelasting van operator is een functie voor computerprogrammeertaal waarmee een programmeur een standaardoperator kan vervangen. Wanneer de operatorfunctie overbelast is, kan deze worden gedeclareerd met aangepaste argumenten die andere gegevenstypen zijn dan wat de operator standaard kon verwerken. De nieuwe parameters kunnen primitieve of door de gebruiker gedefinieerde typen zijn. Binnen het lichaam van de overheersende functie kan een programmeur de parameterwaarden naar wens manipuleren. Door operatoroverbelasting te gebruiken, kan een programmeur intuïtieve snelkoppelingen maken voor het manipuleren van door de gebruiker gedefinieerde gegevenstypen of wijzigen hoe standaardgegevenstypen worden verwerkt.
Wanneer door de gebruiker gedefinieerde gegevenstypen worden gemaakt, is er geen manier om eenvoudige operationele taken uit te voeren, zoals twee bij elkaar optellen of interne gegevens ophogen met behulp van de unary increment operator met het gegevenstype. Operators, inclusief het toevoegingssymbool, kunnen worden genegeerd zodat als ze worden gebruikt als binaire operators tussen twee aangepaste gegevenstypen, ze een door de gebruiker gedefinieerd resultaat retourneren. Op dezelfde manier kan een unaire operator, zoals de incrementele operator, worden genegeerd om een interne waarde binnen het door de gebruiker gedefinieerde type te verhogen.
Als een operator eenmaal overbelast is, moet de compiler een beslissing nemen over wat hij moet doen wanneer hij een overbelaste operator tegenkomt. De compiler beslist de juiste actie die moet worden genomen op basis van welke gegevenstypen worden gebruikt als operanden of in samenwerking met de operator. Als de operanden, die parameterwaarden voor de operatorfunctie zijn, door de gebruiker gedefinieerde gegevenstypen zijn, kiest de compiler de overbelaste functie die parameters heeft die overeenkomen met de gebruikte operanden.
Computertalen variëren in hoe ze dit type ad-hoc polymorfisme mogelijk maken. Verschillende talen kunnen de creatie van nieuwe aangepaste operatoren toestaan, de overbelasting van alle of sommige van zijn operatoren, of kunnen helemaal geen overbelasting van de operator toestaan. Met C ++, C #, PHP en Perl kunnen sommige van hun operators overbelast raken. Overbelasting van de operator is niet toegestaan in C, Java en Javascript.
Zowel overbelasting van de operator als functieoverbelasting in het algemeen zijn onderwerp van enige discussie geweest. Sommigen beweren dat het geven van de vrijheid aan de programmeur om het gedrag van een operator te veranderen, het potentieel kan introduceren voor het creëren van onbedoelde fouten door andere programmeurs die de aangepaste code gebruiken. Het tegenovergestelde gezichtspunt stelt dat het toestaan van overbelasting van de operator programmeurs de mogelijkheid biedt om intuïtieve en beknopte code te maken die gemakkelijker te begrijpen is, minder kost om te produceren en fouten vermindert.