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:
Ecco uno screenshot del codice:
Spiegazione del codice:
- Includere il file di intestazione iostream nel nostro codice per utilizzare le sue funzioni.
- Includi lo spazio dei nomi std nel nostro programma per utilizzare le sue classi senza chiamarlo.
- Crea una classe denominata TestClass.
- Utilizza il modificatore di accesso privato, che contrassegna un membro della classe come accessibile privatamente.
- Crea un conteggio di variabili intere. Questa variabile sarà accessibile privatamente.
- Utilizza il modificatore di accesso pubblico, che contrassegna un membro della classe come accessibile privatamente.
- Utilizzare un costruttore di classi per inizializzare la variabile contatore su 5.
- Sovraccaricare il significato dell'operatore —.
- L'operatore decrementerà il valore della variabile x di 1.
- Fine della sezione di sovraccarico dell'operatore. All'operatore è stato dato un nuovo nome.
- Definizione di una funzione denominata funzione Display().
- 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().
- Fine del corpo della classe.
- Chiama la funzione main(). La logica del programma dovrebbe essere aggiunta all'interno di questa funzione.
- Crea un'istanza della classe TestClass e dagli il nome tc.
- Questo chiamerà la funzione void operator –().
- Utilizzare la posizione della classe TestClass per chiamare la funzione Display().
- La funzione deve restituire valore in caso di completamento positivo.
- 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:
- Funzione membro
- Funzione non membro
- 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
- 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.).
- Il = e & C++ operatori sono sovraccaricati per impostazione predefinita. Ad esempio, puoi copiare gli oggetti della stessa Classe direttamente usando l'operatore =.
- Operator precedence non cambia l'associatività e la precedenza degli operatori. Tuttavia, puoi cambiare l'ordine di valutazione usando le parentesi.
- 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:
Ecco uno screenshot del codice:
Spiegazione del codice:
- Includere il file di intestazione iostream nel nostro codice per utilizzare le sue funzioni.
- Includi lo spazio dei nomi std nel nostro programma per utilizzare le sue classi senza chiamarlo.
- Crea una classe denominata OperatorOverload.
- Utilizza il modificatore di accesso privato, che contrassegna un membro della classe come accessibile privatamente.
- Crea una variabile intera x. Questa variabile sarà accessibile privatamente.
- Utilizza il modificatore di accesso pubblico, che contrassegna un membro della classe come accessibile privatamente.
- Utilizzare un costruttore di classi per inizializzare la variabile x su 10.
- Sovraccarica il significato dell'operatore ++.
- L'operatore incrementerà il valore della variabile x con 2.
- Fine della sezione di sovraccarico dell'operatore. All'operatore è stato dato un nuovo nome.
- Chiamando la funzione Print().
- Stampa il valore della variabile x insieme ad altro testo sulla console quando viene chiamata la funzione Print().
- Fine del corpo della funzione Print().
- Fine del corpo della classe.
- Chiama la funzione main(). La logica del programma dovrebbe essere aggiunta all'interno di questa funzione.
- Crea un'istanza di OperatorOverload Classe denominata ov.
- Questo chiamerà la funzione void operator ++().
- Utilizzare la posizione di OperatorOverload per chiamare la funzione Print().
- La funzione deve restituire valore in caso di completamento positivo.
- 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:
Ecco uno screenshot del codice:
Spiegazione del codice:
- Includere il file header iostream nel nostro programma per poter utilizzare le sue funzioni.
- Includi lo spazio dei nomi std nel nostro programma per poter utilizzare le sue classi senza chiamarlo.
- Crea una classe denominata TestClass. Il { segna l'inizio del corpo della classe.
- Utilizzare il modificatore di accesso privato per contrassegnare le variabili come private, il che significa che è possibile accedervi solo dall'interno della Classe.
- Definire due variabili intere, reale e superiore.
- Utilizza il modificatore di accesso pubblico per contrassegnare il costruttore come pubblico, il che significa che sarà accessibile anche all'esterno della Classe.
- Creazione del costruttore della classe e inizializzazione del file variabili.
- Inizializza il valore della variabile real.
- Inizializza il valore della variabile sopra.
- Fine del corpo del costruttore.
- Sostituisci il significato dell'operatore +.
- Creare il risultato del tipo di dati di tipo TestClass.
- Usa l'operatore + con numeri complessi. Questa riga aggiungerà la parte reale di un numero alla parte reale di un altro numero.
- Usa l'operatore + con numeri complessi. Questa riga aggiungerà la parte immaginaria di un numero alla parte immaginaria di un altro numero.
- Il programma restituirà il valore della variabile result dopo l'esecuzione riuscita.
- Fine della definizione del nuovo significato dell'operatore +, cioè sovraccarico.
- Chiama il metodo print().
- Stampa il nuovo numero complesso dopo l'addizione sulla console.
- Fine del corpo della funzione print().
- Fine del corpo della classe TestClass.
- Chiamando la funzione main().
- 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.
- Esecuzione di un'operazione utilizzando l'operatore sovraccaricato + e memorizzazione del risultato nella variabile c3.
- Stampa del valore della variabile c3 sulla console.
- 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.