Che cos’è il sovraccarico dell’operatore?

Il sovraccarico dell’operatore è una funzionalità del linguaggio di programmazione del computer che consente a un programmatore di ignorare un operatore predefinito. Quando la funzione dell’operatore è sovraccaricata, può essere dichiarata con argomenti personalizzati che sono tipi di dati diversi da quelli che l’operatore era in grado di gestire per impostazione predefinita. I nuovi parametri possono essere di tipo primitivo o definiti dall’utente. All’interno del corpo della funzione di override, un programmatore può manipolare i valori dei parametri come desiderato. Utilizzando l’overloading dell’operatore, un programmatore può creare scorciatoie intuitive per manipolare i tipi di dati definiti dall’utente o modificare il modo in cui vengono gestiti i tipi di dati predefiniti.

Quando vengono creati tipi di dati definiti dall’utente, non è possibile eseguire semplici attività operative, come l’aggiunta di due di essi o l’incremento dei dati interni utilizzando l’operatore di incremento unario con il tipo di dati. Gli operatori, incluso il simbolo di addizione, possono essere sovrascritti in modo che, se utilizzati come operatori binari tra due tipi di dati personalizzati, restituiscano un risultato definito dall’utente. Allo stesso modo, un operatore unario, come l’operatore di incremento, potrebbe essere sovrascritto per aumentare un valore interno all’interno del tipo definito dall’utente.

Una volta che un operatore è sovraccarico, il compilatore deve prendere una decisione su cosa fare quando incontra un operatore sovraccarico. Il compilatore decide l’azione corretta da intraprendere in base ai tipi di dati utilizzati come operandi o insieme all’operatore. Se gli operandi, che sono valori dei parametri per la funzione dell’operatore, sono tipi di dati definiti dall’utente, il compilatore sceglierà la funzione in overload che ha parametri che corrispondono agli operandi utilizzati.

I linguaggi informatici variano nel modo in cui consentono questo tipo di polimorfismo ad hoc. Linguaggi diversi possono consentire la creazione di nuovi operatori personalizzati, l’overload di tutti o alcuni dei suoi operatori o non consentire affatto l’overload degli operatori. C++, C#, PHP e Perl consentono tutti di sovraccaricare alcuni dei loro operatori. L’overload dell’operatore non è consentito in C, Java e Javascript.

Sia il sovraccarico degli operatori che il sovraccarico delle funzioni in generale sono stati oggetto di un certo dibattito. Alcuni sostengono che dare al programmatore la libertà di cambiare il comportamento di un operatore potrebbe introdurre la possibilità di creare errori involontari da parte di altri programmatori che utilizzano il codice personalizzato. Il punto di vista opposto propone che consentire il sovraccarico dell’operatore dia ai programmatori la capacità di creare codice intuitivo e conciso che sarà più facile da capire, costerà meno da produrre e ridurrà gli errori.