Come implementare il sovraccarico degli operatori in c ++?



In questo articolo esamineremo un altro concetto orientato agli oggetti che semplifica la gestione da parte dell'operatore. Impareremmo il sovraccarico degli operatori in C ++.

In questo articolo esploreremo ancora un altro concetto orientato agli oggetti che semplifica la gestione da parte dell'operatore. Cioè, entreremo nei dettagli di Operatore Sovraccarico in C ++ . I seguenti suggerimenti saranno trattati in questo articolo,

Quindi, iniziamo con questo articolo sull'overload degli operatori in C ++.





Sovraccarico in C ++

Se creiamo due o più membri della stessa classe con lo stesso nome ma diversi per numero o tipo di parametro, è noto come sovraccarico C ++.



In C ++, possiamo sovraccaricare:

  • metodi
  • costruttori
  • proprietà indicizzate

È perché questi membri hanno solo parametri.

Andando avanti con questo articolo sull'overload degli operatori in C ++.



Tipi di sovraccarico in C ++

  • Sovraccarico delle funzioni
  • Sovraccarico dell'operatore

Sovraccarico - Sovraccarico dell

Andando avanti con questo articolo sull'overload degli operatori in C ++.

Perché viene utilizzato il sovraccarico dell'operatore?

I programmi C ++ possono essere scritti senza la conoscenza del sovraccarico dell'operatore. Inoltre, il funzionamento dell'operatore è profondamente utilizzato dai programmatori per rendere il programma intuitivo. Per esempio,

Possiamo sostituire il codice come:

calcolo = add (dividere (a, b), moltiplicare (a, b))

Per l'equazione

calcolo = (a / b) + (a * b)

Il sovraccarico degli operatori fornisce un modo semplice e facile per lo sviluppo di nuove definizioni per la maggior parte degli operatori in C ++. Con una conoscenza sufficiente, possiamo quasi creare un nostro nuovo linguaggio attraverso l'uso creativo della funzione e le tecniche di sovraccarico dell'operatore. Possiamo sovraccaricare tutti gli operatori in C ++ tranne i seguenti:
● Operatore ambito (: :)
● Operatore di dimensione (Sizeof)
● selettore membri (.)
● selettore del puntatore del membro (*)
● operatore ternario (? :)

creare una serie di oggetti

Sintassi del sovraccarico degli operatori

return_type class_name:: operator op (argument_list) {// function body}

Dove il tipo restituito è il tipo di valore restituito dalla funzione. class_name è il nome della classe.

Andando avanti con questo articolo sull'overload degli operatori in C ++.

Implementazione del sovraccarico degli operatori in C ++

La funzione operatore deve essere non statica (funzione membro) o funzione amico per essere sovraccaricata. La funzione di sovraccarico dell'operatore può essere applicata a una funzione membro se l'operando sinistro è un oggetto di quella classe, ma se l'operando sinistro è diverso, la funzione di sovraccarico dell'operatore deve essere definita come funzione non membro.
La funzione di sovraccarico degli operatori può essere resa funzione amico se richiede l'accesso ai membri privati ​​e protetti della classe. Ad esempio, l'operatore op è una funzione operatore in cui op è l'operatore che viene sovraccaricato e l'operatore è la parola chiave. Il sovraccarico degli operatori può essere ottenuto implementando una funzione che può essere una funzione membro, una funzione non membro o una funzione amico.

Qual è la differenza tra le funzioni dell'operatore e le funzioni normali?

Le funzioni dell'operatore sono le stesse delle normali funzioni. L'unica differenza è che il nome di una funzione operatore è sempre parola chiave operatore seguita dal simbolo dell'operatore e le funzioni operatore vengono chiamate quando viene utilizzato l'operatore corrispondente.

Andando avanti con questo articolo sull'overload degli operatori in C ++.

Tipi di approcci al sovraccarico

Il sovraccarico dell'operatore può essere eseguito utilizzando tre approcci, sono

  • Sovraccarico dell'operatore unario.
  • Operatore binario di sovraccarico.
  • Sovraccarico dell'operatore binario utilizzando una funzione amico.

Andando avanti con questo articolo sull'overload degli operatori in C ++.

Operatore unario in sovraccarico

Consideriamo l'operatore unario '-'. Un operatore meno quando utilizzato come unario richiede un solo operando. Sappiamo che questo operatore cambia il segno di un operando quando applicato a una variabile di dati di base. Vediamo come sovraccaricare questo operatore in modo che possa essere applicato a un oggetto nello stesso modo in cui viene applicato a una variabile int o float. Il segno meno unario, quando applicato a un oggetto, dovrebbe diminuire ciascuno dei suoi elementi di dati.

Esempio:

configurare hadoop su ubuntu
#include utilizzando lo spazio dei nomi std class Height {public: // Member Objects int feet, inch // Constructor to initialize the object's value Height (int f, int i) {feet = f inch = i} // Overloading (-) operator to esegue l'operazione di decremento // dell'operatore di vuoto dell'oggetto Altezza- () {piedi-- pollici-- cout<< 'Feet & Inches after decrement: ' << feet << ' ' ' << inch <

Produzione:

Spiegazione:
Nell'esempio precedente, sovraccarichiamo l'operatore unario '-' per eseguire il decremento nelle due variabili della classe Height. Passiamo due parametri al costruttore e salviamo i loro valori in piedi e variabili in pollici. Quindi definiamo la funzione di sovraccarico dell'operatore (void operator- ()
) in cui le due variabili vengono decrementate di una posizione.
Quando scriviamo -h1 chiama la funzione di overload dell'operatore e decrementa i valori passati al costruttore.

Andando avanti con questo articolo sull'overload degli operatori in C ++.

Operatore binario in sovraccarico

È un sovraccarico di un operatore che opera su due operandi. Prendiamo lo stesso esempio della classe Altezza, ma questa volta aggiungi due oggetti Altezza h1 e h2.

Esempio:

#include using namespace std class Height {public: int feet, inch Height () {feet = 0 inch = 0} Height (int f, int i) {feet = f inch = i} // Operatore di sovraccarico (+) da eseguire aggiunta di // due oggetti di distanza usando l'operatore binario Operatore Altezza + (Altezza & d2) // Chiama per riferimento {// Crea un oggetto per restituire Altezza h3 // Esegui l'addizione di piedi e pollici h3.feet = piedi + d2.feet h3. inch = inch + d2.inch // Restituisce l'oggetto risultante return h3}} int main () {Height h1 (3, 7) Height h2 (6, 1) Height h3 // Usa l'operatore sovraccarico h3 = h1 + h2 cout<< 'Sum of Feet & Inches: ' << h3.feet << ''' << h3.inch << endl return 0 } 

Produzione:

Spiegazione:
Operatore di altezza + (Altezza e h2), qui il tipo return_type della funzione è la classe Altezza, quindi restituisce un oggetto h3 della classe Altezza. Nella riga h3 = h1 + h2, h1 chiama la funzione operatore delle sue classi oggetti e prende h2 come parametro, quindi applichiamo h3.feet = feet + d2.feet e h3.inch = inch + d2.inch che memorizza il somma dei valori delle variabili feet e inch nelle variabili associate all'oggetto h3.
Quando l'istruzione 'h3 = h1 + h2' richiama la funzione di sovraccarico dell'operatore, l'oggetto h1 si è assunto la responsabilità di invocare la funzione e h2 interpreta il ruolo di argomento passato alla funzione. L'istruzione di chiamata precedente è equivalente a h3 = h1.operator + (h2) pertanto si accede direttamente al membro dati di h2 e si accede al membro dati di h2 (che viene passato come argomento) utilizzando l'operatore punto.

Regole per il sovraccarico dell'operatore

  • Solo gli operatori esistenti possono essere sovraccaricati e i nuovi operatori non possono essere sovraccaricati
  • L'operatore sovraccarico deve contenere almeno un operando del tipo di dati definito dall'utente.
  • Non usiamo una funzione amico per sovraccaricare determinati operatori. Tuttavia, le funzioni membro possono essere utilizzate per sovraccaricare tali operatori.
  • Quando gli operatori unari vengono sovraccaricati tramite una funzione membro, non accettano argomenti espliciti, ma, se vengono sovraccaricati da una funzione amico, accettano un argomento.
  • Quando gli operatori binari vengono sovraccaricati tramite una funzione membro, accettano un argomento esplicito e, se vengono sovraccaricati tramite una funzione amico, accettano due argomenti espliciti.

Quindi siamo giunti alla fine di questo articolo su 'Operator Overloading in C ++'. Se desideri saperne di più, dai un'occhiata al Java Training di Edureka, una società di formazione online affidabile. Edureka's sono progettati per formarti sia sui concetti di base che avanzati su Java insieme a vari framework Java come Hibernate e Spring.

Hai domande per noi? Per favore, menzionalo nella sezione commenti di questo blog e ti risponderemo il prima possibile.