Sovraccarico dell'operatore C ++

Sovraccarico dell'operatore C ++
Questo articolo fornisce una guida al sovraccarico dell'operatore in C++. Il sovraccarico dell'operatore è una caratteristica utile e potente del linguaggio di programmazione C ++. C ++ consente il sovraccarico della maggior parte degli operatori integrati. 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 per eseguire una particolare operazione. Ad esempio, esistono vari tipi di operatori in C ++, come operatori aritmetici, operatori logici, operatori relazionali, operatori di assegnazione, operatori di bitwise e altro ancora.

Cos'è il sovraccarico dell'operatore?

Il linguaggio C ++ consente ai programmatori di fornire 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 integrati, come INT, Float, ecc. Per aggiungere due tipi di dati definiti dall'utente, è necessario sovraccaricare l'operatore "+".

Sintassi per il sovraccarico dell'operatore

C ++ fornisce una funzione speciale chiamata "operatore" per il sovraccarico dell'operatore. Quanto segue è la sintassi per il sovraccarico dell'operatore:

Samplass di classe

..
Pubblico:
Simbolo dell'operatore returnType (argomenti)
..

..
;

Qui, "operatore" è una parola chiave e "simbolo" è l'operatore che vogliamo sovraccaricare.

Esempi

Ora che capisci il concetto generale di sovraccarico dell'operatore, facciamo passare un paio di programmi di esempio funzionanti per capire questa idea in modo più concreto. Copriremo i seguenti esempi:

  1. Esempio 1: sovraccarico di operatore unario (1)
  2. Esempio 2: sovraccarico di operatore unario (2)
  3. Esempio 3: sovraccarico di operatori binari
  4. Esempio 4: sovraccarico dell'operatore relazionale

Esempio 1: sovraccarico di operatore unario (1)

In questo esempio, dimostreremo come un operatore unario può essere sovraccarico in C++. Abbiamo definito la classe, "Square_box" e le funzioni pubbliche, "Operatore ++ ()" e "Operatore ++ (int)", per sovraccaricare sia il prefisso che gli operatori di incremento postfix. Nella funzione "main ()", abbiamo creato l'oggetto, "mysquare_box1."Abbiamo quindi applicato gli operatori di incremento prefisso e postfix all'oggetto" mysquare_box1 "per dimostrare il sovraccarico di operatore unario.

#includere
Utilizzo dello spazio dei nomi std;
Class Square_box

privato:
Float lunghezza;
Larghezza galleggiante;
altezza galleggiante;
pubblico:
Scatola quadrata()
Square_box (float L, galleggiante W, galleggiante H)

lunghezza = l;
larghezza = w;
altezza = h;

// sovraccarico di operatore - operatore prefisso "++"
vuoto operatore ++ ()

lunghezza ++;
larghezza ++;
altezza ++;

// sovraccarico dell'operatore - operatore postfix "++"
vuoto operatore ++ (int)

lunghezza ++;
larghezza ++;
altezza ++;

void output ()

cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;

;
int main ()

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();
restituzione 0;

Esempio 2: sovraccarico di operatore unario (2)

Questo è un altro esempio in cui dimostreremo come un operatore unario può essere sovraccarico in C++. Abbiamo definito la classe, "Square_box" e le funzioni pubbliche, "operatore - ()" e "operatore - (int)," per sovraccaricare sia gli operatori di prefisso che postfix. Nella funzione "main ()", abbiamo creato l'oggetto "mysquare_box1". Abbiamo quindi applicato gli operatori di decremento prefisso e postfix all'oggetto "mysquare_box1".

#includere
Utilizzo dello spazio dei nomi std;
Class Square_box

privato:
Float lunghezza;
Larghezza galleggiante;
altezza galleggiante;
pubblico:
Scatola quadrata()
Square_box (float L, galleggiante W, galleggiante H)

lunghezza = l;
larghezza = w;
altezza = h;

// sovraccarico dell'operatore-"-" Operatore prefisso
vuoto operatore - ()

lunghezza--;
larghezza--;
altezza--;

// sovraccarico dell'operatore-"-" Operatore postfix
vuoto operatore - (int)

lunghezza--;
larghezza--;
altezza--;

void output ()

cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;

;
int main ()

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();
restituzione 0;

Esempio 3: sovraccarico di operatori binari

Ora esamineremo un esempio di sovraccarico di operatori binari. La sintassi per il sovraccarico di operatori binari sarà leggermente diversa dal sovraccarico di operatore unario. In questo esempio, sovraccaricheremo l'operatore "+" per aggiungere due oggetti "Square_box".

#includere
Utilizzo dello spazio dei nomi std;
Class Square_box

privato:
Float lunghezza;
Larghezza galleggiante;
altezza galleggiante;
pubblico:
Scatola quadrata()
Square_box (float L, galleggiante W, galleggiante H)

lunghezza = l;
larghezza = w;
altezza = h;

// sovraccarico dell'operatore - operatore "+"
Square_box Operator + (const Square_box & OBJ)

Square_box temp;
temp.lunghezza = lunghezza + obj.lunghezza;
temp.larghezza = larghezza + obj.larghezza;
temp.altezza = altezza + obj.altezza;
restituire temp;

void output ()

cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;

;
int main ()

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 = mysquare_box1 + mysquare_box2;
cout << "Dimensions of resultant square box = " << endl;
risultato.produzione();
restituzione 0;

Esempio 4: sovraccarico dell'operatore relazionale

Ora esamineremo un esempio di sovraccarico di operatori relazionali. La sintassi per il sovraccarico dell'operatore relazionale è proprio come quella del sovraccarico di operatori binari. In questo esempio, sovraccaricheremo gli operatori "" da applicare agli oggetti "Square_box".

#includere
Utilizzo dello spazio dei nomi std;
Class Square_box

privato:
Float lunghezza;
Larghezza galleggiante;
altezza galleggiante;
pubblico:
Scatola quadrata()
Square_box (float L, galleggiante W, galleggiante H)

lunghezza = l;
larghezza = w;
altezza = h;

// sovraccarico dell'operatore - "<" operator
Operatore bool < (const Square_Box& obj)

Se (lunghezza < obj.length)
restituire vero;
altro
restituire false;

// sovraccarico dell'operatore - ">" operatore
Operatore bool> (const quadrato_box & obj)

if (lunghezza> obj.lunghezza)
restituire vero;
altro
restituire false;

void output ()

cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;

;
int main ()

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;
restituzione 0;

Conclusione

C ++ è un linguaggio di programmazione per uso generale e flessibile che è ampiamente utilizzato in una varietà di domini. Questo linguaggio di programmazione supporta il polimorfismo sia di compilazione che di runtime. Questo articolo ti ha mostrato come eseguire il sovraccarico dell'operatore in C++. Questa è una caratteristica molto utile di C ++ che aggiunge qualche sforzo extra per lo sviluppatore per definire l'operatore per il sovraccarico, ma sicuramente rende la vita più facile per l'utente della classe.