Cos'è l'operatore??
Un operatore è un simbolo che indica al compilatore di eseguire una determinata operazione. Ad esempio, ci sono vari tipi di operatori in C++, come operatori aritmetici, operatori logici, operatori relazionali, operatori di assegnazione, operatori bit a bit e altro.
Che cos'è il sovraccarico dell'operatore??
Il linguaggio C++ consente ai programmatori di dare significati speciali agli operatori. Ciò significa che è possibile ridefinire l'operatore per i tipi di dati definiti dall'utente in C++. Ad esempio, "+" viene utilizzato per aggiungere tipi di dati incorporati, come int, float, ecc. Per aggiungere due tipi di dati definiti dall'utente, è necessario sovraccaricare l'operatore "+".
Sintassi per il sovraccarico dell'operatore
Il C++ fornisce una funzione speciale chiamata "operatore" per l'overload degli operatori. La seguente è la sintassi per l'overload degli operatori:
classe campioneClasse…
Pubblico:
simbolo dell'operatore returnType (argomenti)
…
…
;
Qui, "operatore" è una parola chiave e "simbolo" è l'operatore che vogliamo sovraccaricare.
Esempi
Ora che hai compreso il concetto generale di sovraccarico degli operatori, esaminiamo un paio di programmi di esempio funzionanti per farti capire questa idea in modo più concreto. Tratteremo i seguenti esempi:
- Esempio 1: sovraccarico dell'operatore unario (1)
- Esempio 2: sovraccarico dell'operatore unario (2)
- Esempio 3: sovraccarico dell'operatore binario
- Esempio 4: sovraccarico dell'operatore relazionale
Esempio 1: sovraccarico dell'operatore unario (1)
In questo esempio, dimostreremo come un operatore unario può essere sovraccaricato in C++. Abbiamo definito la classe "Square_Box" e le funzioni pubbliche "operator ++ ()" e "operator ++ (int)" per sovraccaricare sia gli operatori di incremento prefisso che postfisso. Nella funzione “main()”, abbiamo creato l'oggetto, “mySquare_Box1.Abbiamo quindi applicato gli operatori di incremento prefisso e postfisso all'oggetto “mySquare_Box1” per dimostrare l'overloading dell'operatore unario.
#includereusando lo spazio dei nomi std;
classe Square_Box
privato:
lunghezza del galleggiante;
larghezza del galleggiante;
altezza del galleggiante;
pubblico:
Scatola quadrata()
Square_Box (float l, float w, float h)
lunghezza = l;
larghezza = w;
altezza = h;
// Operatore sovraccarico - operatore prefisso "++"
operatore void ++ ()
lunghezza++;
larghezza++;
altezza++;
// Operatore Overloading - Operatore suffisso "++"
operatore void ++ (int)
lunghezza++;
larghezza++;
altezza++;
output vuoto()
cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;
;
intero principale()
Square_Box mySquare_Box1(3.0, 5.0, 6.0);
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.produzione();
mySquare_Box1++;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.produzione();
++mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.produzione();
restituisce 0;
Esempio 2: sovraccarico dell'operatore unario (2)
Questo è un altro esempio in cui dimostreremo come un operatore unario può essere sovraccaricato in C++. Abbiamo definito la classe "Square_Box" e le funzioni pubbliche "operator - ()" e "operator - (int)" per sovraccaricare gli operatori di decremento prefisso e postfisso. Nella funzione “main()”, abbiamo creato l'oggetto “mySquare_Box1”. Abbiamo quindi applicato gli operatori di decremento prefisso e postfisso all'oggetto “mySquare_Box1”.
#includereusando lo spazio dei nomi std;
classe Square_Box
privato:
lunghezza del galleggiante;
larghezza del galleggiante;
altezza del galleggiante;
pubblico:
Scatola quadrata()
Square_Box (float l, float w, float h)
lunghezza = l;
larghezza = w;
altezza = h;
// Operatore sovraccarico - operatore prefisso "--"
operatore void -- ()
lunghezza--;
larghezza--;
altezza--;
// Operatore sovraccarico - operatore suffisso "--"
operatore void -- (int)
lunghezza--;
larghezza--;
altezza--;
output vuoto()
cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;
;
intero principale()
Square_Box mySquare_Box1(3.0, 5.0, 6.0);
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.produzione();
mySquare_Box1--;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.produzione();
--mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.produzione();
restituisce 0;
Esempio 3: sovraccarico dell'operatore binario
Ora, esamineremo un esempio di sovraccarico dell'operatore binario. La sintassi per l'overload di operatori binari sarà in qualche modo diversa dall'overload di operatori unari. In questo esempio, sovraccaricaremo l'operatore "+" per aggiungere due oggetti "Square_Box".
#includereusando lo spazio dei nomi std;
classe Square_Box
privato:
lunghezza del galleggiante;
larghezza del galleggiante;
altezza del galleggiante;
pubblico:
Scatola quadrata()
Square_Box (float l, float w, float h)
lunghezza = l;
larghezza = w;
altezza = h;
// Sovraccarico dell'operatore - Operatore "+"
Operatore Square_Box + (const Square_Box& obj)
Square_Box temperatura;
temperatura.lunghezza = lunghezza + oggetto.lunghezza;
temperatura.larghezza = larghezza + oggetto.larghezza;
temperatura.altezza = altezza + oggetto.altezza;
temperatura di ritorno;
output vuoto()
cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;
;
intero principale()
Square_Box mySquare_Box1(3.0, 5.0, 6.0), mySquare_Box2(2.0, 3.0, 5.0), risultato;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.produzione();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.produzione();
risultato = mioSquare_Box1 + mioSquare_Box2;
cout << "Dimensions of resultant square box = " << endl;
risultato.produzione();
restituisce 0;
Esempio 4: sovraccarico dell'operatore relazionale
Ora, esamineremo un esempio di sovraccarico di operatori relazionali. La sintassi per l'overload dell'operatore relazionale è proprio come quella dell'overloading dell'operatore binario. In questo esempio, sovraccaricaremo il "<” and “>” operatori da applicare agli oggetti “Square_Box”.
#includereusando lo spazio dei nomi std;
classe Square_Box
privato:
lunghezza del galleggiante;
larghezza del galleggiante;
altezza del galleggiante;
pubblico:
Scatola quadrata()
Square_Box (float l, float w, float h)
lunghezza = l;
larghezza = w;
altezza = h;
// Sovraccarico operatore - "<" operator
operatore bool < (const Square_Box& obj)
if(lunghezza < obj.length)
restituire vero;
altro
restituire falso;
// Operatore sovraccarico - operatore ">"
operatore bool > (const Square_Box& obj)
if(lunghezza > obj.lunghezza)
restituire vero;
altro
restituire falso;
output vuoto()
cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;
;
intero principale()
Square_Box mySquare_Box1(2.0, 3.0, 5.0), mySquare_Box2(4.0, 6.0, 8.0);
risultato bool;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.produzione();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.produzione();
risultato = mySquare_Box1 < mySquare_Box2;
cout << "mySquare_Box1 < mySquare_Box2 = " << result < mySquare_Box2;
cout < mySquare_Box2 = " << result << endl;
restituisce 0;
Conclusione
C++ è un linguaggio di programmazione flessibile e generico ampiamente utilizzato in una varietà di domini. Questo linguaggio di programmazione supporta il polimorfismo sia in fase di compilazione che in fase di esecuzione. Questo articolo ti ha mostrato come eseguire l'overloading degli operatori in C++. Questa è una funzionalità molto utile del C++ che aggiunge uno sforzo in più allo sviluppatore per definire l'operatore per l'overload, ma rende sicuramente la vita più facile per l'utente della classe.