Video: sez4/2 - Parametri e callback 2024
I tipi di dati intrinseci sono incorporati nel linguaggio C ++, come int , float , e doppio e i vari tipi di puntatore. C ++ consente al programmatore di definire gli operatori per le classi che il programmatore ha creato in aggiunta a questi operatori intrinseci. Questo è chiamato sovraccarico dell'operatore.
Normalmente, l'overloading dell'operatore è facoltativo e non viene tentato dall'avvio dei programmatori C ++. Molti programmatori C ++ esperti non pensano che il sovraccarico dell'operatore sia una grande idea. Tuttavia, dovrai imparare come sovraccaricare un operatore: l'operatore di assegnazione.
Un operatore non è altro che una funzione built-in con una sintassi particolare. La seguente operazione di aggiunta
a + b
potrebbe essere interpretata come se fosse stata scritta
operatore + (a, b)
Infatti, C ++ assegna a ciascun operatore un nome di stile funzione. Il nome funzionale di un operatore è il simbolo dell'operatore preceduto dall'operatore della parola chiave e seguito dai tipi di argomento appropriati. Ad esempio, l'operatore + che aggiunge un int a un int che genera un int è chiamato int operator + (int, int).
Qualsiasi operatore esistente può essere definito per una classe definita dall'utente. Quindi, potrei creare un operatore Complex * (const Complex &, const Complex &) che mi permetterebbe di moltiplicare due oggetti di tipo Complex . Il nuovo operatore può avere la stessa semantica dell'operatore che sovraccarica, ma non deve farlo. Le seguenti regole si applicano quando si sovraccaricano gli operatori:
-
Il programmatore non può sovraccaricare . (punto), :: (due punti), . *, * ->, sizeof e ?: (ternario) operatori.
-
Il programmatore non può inventare un nuovo operatore. Ad esempio, non puoi inventare l'operazione x $ y .
-
La sintassi di un operatore non può essere modificata. Pertanto, non è possibile definire un'operazione% i poiché% è già definito come operatore binario.
-
La precedenza dell'operatore non può cambiare. Un programma non può forzare l'operatore + ad essere valutato prima dell'operatore * .
-
Gli operatori non possono essere ridefiniti se applicati a tipi intrinseci - non è possibile modificare il significato di 1 + 2. Gli operatori esistenti possono essere sovraccaricati solo per i nuovi tipi definiti.
Il sovraccarico degli operatori è una di quelle cose che sembrano un'idea molto migliore di quello che realmente è. Solitamente, il sovraccarico dell'operatore introduce più problemi di quanti ne risolva.