Skip to content

Sovraccarico degli Operatori (Operator Overloading)

Il C++ ci permette di infondere i poteri degli operatori fondamentali all’interno delle nostre classi personalizzate (User-Defined Types). Questa tecnica si chiama Sovraccarico degli Operatori (Operator Overloading). Affinché sia possibile, è sufficiente definire un metodo nella nostra classe chiamato operator[SIMBOLO].

Immaginiamo di voler creare una classe numerica CheckedInteger che somiglia e si comporta in tutto e per tutto come un numero intero normale, ma con un superpotere: crasha lanciando un’eccezione ogni volta che avviene un Overflow Aritmetico.

Ricordiamo che per i tipi base, l’overflow degli unsigned int comporta un tacito reset allo zero (modulo wrap-around), originando bug oscuri.

L’uso del sovraccarico degli operatori andrebbe pesato: è grandioso quando usato per rappresentare vettori matematici (es. Matrix a = b * c), ma rischia di creare confusione se sovvertito e applicato a scopi anti-intuitivi (es. usare l’operatore - per rimuovere nodi da una linked list).