C++

Sovraccarico dell'operatore C++

Sovraccarico dell'operatore C++
Questo articolo fornisce una guida al sovraccarico dell'operatore in C++. L'overloading degli operatori è una funzionalità utile e potente del linguaggio di programmazione C++. C++ consente l'overload della maggior parte degli operatori integrati built. In questo tutorial, useremo diversi esempi per dimostrare il meccanismo di sovraccarico dell'operatore.

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:

  1. Esempio 1: sovraccarico dell'operatore unario (1)
  2. Esempio 2: sovraccarico dell'operatore unario (2)
  3. Esempio 3: sovraccarico dell'operatore binario
  4. 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.

#includere
usando 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”.

#includere
usando 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".

#includere
usando 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”.

#includere
usando 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.

Come cambiare i pulsanti sinistro e destro del mouse su PC Windows 10
È abbastanza normale che tutti i mouse dei computer siano progettati ergonomicamente per gli utenti destrimani. Ma sono disponibili dispositivi mouse ...
Emula i clic del mouse passando il mouse utilizzando il mouse senza clic in Windows 10
L'uso di un mouse o di una tastiera nella postura sbagliata di un uso eccessivo può causare molti problemi di salute, tra cui tensione, sindrome del t...
Aggiungi i gesti del mouse a Windows 10 utilizzando questi strumenti gratuiti
Negli ultimi anni computer e sistemi operativi si sono notevolmente evoluti greatly. C'è stato un tempo in cui gli utenti dovevano usare i comandi per...