C++ Operasovraccarico con esempi

Che cos'è la Operasovraccarico?

utilizzando sovraccarico dell'operatore in C++, puoi specificare più di un significato per un operatore in un ambito. Lo scopo del sovraccarico dell'operatore è quello di fornire un significato speciale di un operatore per un tipo di dati definito dall'utente.

Con l'aiuto del sovraccarico dell'operatore, è possibile ridefinire la maggior parte degli C++ operatori. Puoi anche usare l'overloading degli operatori per eseguire diverse operazioni usando un operatore.

Sintassi

Sovraccaricare a C++ operatore, dovresti definire una funzione speciale all'interno della classe come segue:

class class_name
{
    ... .. ...
    public
       return_type operator symbol (argument(s))
       {
           ... .. ...
       } 
    ... .. ...
};

Ecco una spiegazione per la sintassi di cui sopra:

  • return_type è il tipo restituito per la funzione.
  • Successivamente, menzioni la parola chiave operator.
  • Il simbolo indica il simbolo dell'operatore da sovraccaricare. Ad esempio, +, -, <, ++.
  • Gli argomenti possono essere passati alla funzione dell'operatore allo stesso modo delle funzioni.

esempio 1

#include <iostream>
using namespace std;
class TestClass {
private:
	int count;
public:
	TestClass() : count(5) {}
	void operator --() {
		count = count - 3;
	}
	void Display() { 

		cout << "Count: " << count; }
};

int main() {
	TestClass tc;
	--tc;
	tc.Display();
	return 0;
}

Produzione:

Operasovraccarico

Ecco uno screenshot del codice:

Operasovraccarico

Spiegazione del codice:

  1. Includere il file di intestazione iostream nel nostro codice per utilizzare le sue funzioni.
  2. Includi lo spazio dei nomi std nel nostro programma per utilizzare le sue classi senza chiamarlo.
  3. Crea una classe denominata TestClass.
  4. Utilizza il modificatore di accesso privato, che contrassegna un membro della classe come accessibile privatamente.
  5. Crea un conteggio di variabili intere. Questa variabile sarà accessibile privatamente.
  6. Utilizza il modificatore di accesso pubblico, che contrassegna un membro della classe come accessibile privatamente.
  7. Utilizzare un costruttore di classi per inizializzare la variabile contatore su 5.
  8. Sovraccaricare il significato dell'operatore —.
  9. L'operatore decrementerà il valore della variabile x di 1.
  10. Fine della sezione di sovraccarico dell'operatore. All'operatore è stato dato un nuovo nome.
  11. Definizione di una funzione denominata funzione Display().
  12. Stampa il valore del conteggio delle variabili insieme ad altro testo sulla console quando viene chiamata la funzione Display(). Il } segna la fine del corpo della funzione Display().
  13. Fine del corpo della classe.
  14. Chiama la funzione main(). La logica del programma dovrebbe essere aggiunta all'interno di questa funzione.
  15. Crea un'istanza della classe TestClass e dagli il nome tc.
  16. Questo chiamerà la funzione void operator –().
  17. Utilizzare la posizione della classe TestClass per chiamare la funzione Display().
  18. La funzione deve restituire valore in caso di completamento positivo.
  19. Fine del corpo della funzione main().

Approcci diversi a Operator Sovraccarico in C++

È possibile eseguire il sovraccarico dell'operatore implementando uno qualsiasi dei seguenti tipi di funzioni:

  1. Funzione membro
  2. Funzione non membro
  3. Funzione amico
  • La funzione di sovraccarico dell'operatore può essere una funzione membro quando un operando Left è un oggetto della Classe.
  • Quando l'operando di sinistra è diverso, il Operator la funzione di sovraccarico dovrebbe essere una funzione non membro.

È possibile rendere la funzione di sovraccarico dell'operatore una funzione amico se ha bisogno di accedere ai membri della classe privata e protetta.

Può tutto C++ Operai tori sono sovraccarichi?

No, ci sono C++ operatori che non possono essere sovraccaricati.

Essi comprendono:

  • :: -Operatore di risoluzione dell'ambito
  • ?: -operatore ternario.
  • . -selettore dei membri
  • Operatore dimensione
  • * -selettore del puntatore membro

Cose da ricordare

  1. Con l'overloading degli operatori, puoi ridefinire il modo in cui un operatore funziona solo per i tipi definiti dall'utente (oggetti, strutture). Non è possibile utilizzarlo per i tipi incorporati (float, char, int, ecc.).
  2. Il = e & C++ operatori sono sovraccaricati per impostazione predefinita. Ad esempio, puoi copiare gli oggetti della stessa Classe direttamente usando l'operatore =.
  3. Operator precedence non cambia l'associatività e la precedenza degli operatori. Tuttavia, puoi cambiare l'ordine di valutazione usando le parentesi.
  4. Ci sono quattro operatori che non è possibile sovraccaricare C++Includono l'operatore di risoluzione dell'ambito (::), l'operatore di selezione dei membri (.), l'operatore di selezione dei membri tramite un puntatore alla funzione (.*) e l'operatore ternario (?:).

Regole per Operasovraccarico

Ecco le regole per Operasovraccarico:

  • Perché funzioni, almeno un operando deve essere un oggetto di classe definito dall'utente.
  • Puoi sovraccaricare solo gli operatori esistenti. Non è possibile sovraccaricare nuovi operatori.
  • Alcuni operatori non possono essere sovraccaricati utilizzando una funzione amico. Tuttavia, tali operatori possono essere sovraccaricati utilizzando la funzione membro.

Come sovraccaricare Operator

esempio 1

#include <iostream>   
using namespace std;
class OperatorOverload {
private:
	int x;

public:
	OperatorOverload() : x(10) {}
	void operator ++() {
		x = x + 2;
	}
	void Print() {
		cout << "The Count is: " << x;
		}
};
int main() {
	OperatorOverload ov;
	++ov;   
	ov.Print();
	return 0;
}

Produzione:

Sovraccarico Operaesempio

Ecco uno screenshot del codice:

Sovraccarico Operaesempio

Spiegazione del codice:

  1. Includere il file di intestazione iostream nel nostro codice per utilizzare le sue funzioni.
  2. Includi lo spazio dei nomi std nel nostro programma per utilizzare le sue classi senza chiamarlo.
  3. Crea una classe denominata OperatorOverload.
  4. Utilizza il modificatore di accesso privato, che contrassegna un membro della classe come accessibile privatamente.
  5. Crea una variabile intera x. Questa variabile sarà accessibile privatamente.
  6. Utilizza il modificatore di accesso pubblico, che contrassegna un membro della classe come accessibile privatamente.
  7. Utilizzare un costruttore di classi per inizializzare la variabile x su 10.
  8. Sovraccarica il significato dell'operatore ++.
  9. L'operatore incrementerà il valore della variabile x con 2.
  10. Fine della sezione di sovraccarico dell'operatore. All'operatore è stato dato un nuovo nome.
  11. Chiamando la funzione Print().
  12. Stampa il valore della variabile x insieme ad altro testo sulla console quando viene chiamata la funzione Print().
  13. Fine del corpo della funzione Print().
  14. Fine del corpo della classe.
  15. Chiama la funzione main(). La logica del programma dovrebbe essere aggiunta all'interno di questa funzione.
  16. Crea un'istanza di OperatorOverload Classe denominata ov.
  17. Questo chiamerà la funzione void operator ++().
  18. Utilizzare la posizione di OperatorOverload per chiamare la funzione Print().
  19. La funzione deve restituire valore in caso di completamento positivo.
  20. Fine del corpo della funzione main().

esempio 2

#include<iostream> 
using namespace std;

class TestClass {
private:
	int real, over;
public:
	TestClass(int rl = 0, int ov = 0) {
		real = rl;
		over = ov;
	}

	TestClass operator + (TestClass const &obj) {
		TestClass result;
		result.real = real + obj.real;
		result.over = over + obj.over;
		return result;
	}
	void print() {
		cout << real << " + i" << over << endl;
	}
};
int main()
{
	TestClass c1(9, 5), c2(4, 3);
	TestClass c3 = c1 + c2;
	c3.print();
}

Produzione:

Sovraccarico Operaesempio

Ecco uno screenshot del codice:

Sovraccarico Operaesempio

Spiegazione del codice:

  1. Includere il file header iostream nel nostro programma per poter utilizzare le sue funzioni.
  2. Includi lo spazio dei nomi std nel nostro programma per poter utilizzare le sue classi senza chiamarlo.
  3. Crea una classe denominata TestClass. Il { segna l'inizio del corpo della classe.
  4. Utilizzare il modificatore di accesso privato per contrassegnare le variabili come private, il che significa che è possibile accedervi solo dall'interno della Classe.
  5. Definire due variabili intere, reale e superiore.
  6. Utilizza il modificatore di accesso pubblico per contrassegnare il costruttore come pubblico, il che significa che sarà accessibile anche all'esterno della Classe.
  7. Creazione del costruttore della classe e inizializzazione del file variabili.
  8. Inizializza il valore della variabile real.
  9. Inizializza il valore della variabile sopra.
  10. Fine del corpo del costruttore.
  11. Sostituisci il significato dell'operatore +.
  12. Creare il risultato del tipo di dati di tipo TestClass.
  13. Usa l'operatore + con numeri complessi. Questa riga aggiungerà la parte reale di un numero alla parte reale di un altro numero.
  14. Usa l'operatore + con numeri complessi. Questa riga aggiungerà la parte immaginaria di un numero alla parte immaginaria di un altro numero.
  15. Il programma restituirà il valore della variabile result dopo l'esecuzione riuscita.
  16. Fine della definizione del nuovo significato dell'operatore +, cioè sovraccarico.
  17. Chiama il metodo print().
  18. Stampa il nuovo numero complesso dopo l'addizione sulla console.
  19. Fine del corpo della funzione print().
  20. Fine del corpo della classe TestClass.
  21. Chiamando la funzione main().
  22. Passando i valori delle parti reali e complesse da sommare. La prima parte di c1 verrà sommata alla prima parte di c2, ovvero 9+4. La seconda parte di c1 verrà sommata alla seconda parte di c, ovvero 5+3.
  23. Esecuzione di un'operazione utilizzando l'operatore sovraccaricato + e memorizzazione del risultato nella variabile c3.
  24. Stampa del valore della variabile c3 sulla console.
  25. Fine del corpo della funzione main().

Sommario

  • È possibile specificare più di un significato per a C++ operatore in un ambito.
  • Questo è chiamato sovraccarico degli operatori.
  • OperaIl sovraccarico di Tor fornisce un significato speciale a un operatore per un tipo di dati definito dall'utente.
  • Puoi ridefinire la maggior parte di C++ operatori tramite sovraccarico degli operatori.
  • Non tutti C++ gli operatori possono essere sovraccaricati.
  • Affinché un operatore venga sovraccaricato, almeno uno degli operandi deve essere un oggetto definito dall'utente.
  • È possibile eseguire l'overload solo degli operatori esistenti. Non è possibile sovraccaricare nuovi operatori.

Newsletter quotidiana di Guru99

Inizia la giornata con le ultime e più importanti notizie sull'intelligenza artificiale, pubblicate in questo momento.