Overloading degli operatori in C ++





перегрузка операторов c++, перегрузка операторов с++, Sovraccarico C ++ operazioni, перегруl'overloading degli operatori C ++

Overloading degli operatori in una certa misura, il processo creativo. Con il suo aiuto, programmatori è possibile rendere più facile per te per scrivere codice, e altri – migliorare la leggibilità. per esempio, quando qualche azione deve essere ripetuta più volte nel codice, e l'uso solo dolorosamente permanente per questa funzione speciale – Si può sovraccaricare un operatore per questo. Diamo, nel codice è necessario combinare spesso linea (aggiungere una stringa di un elemento di classe string). Esso può essere progettato in modi diversi. Ma lo faremo, alla concatenazione di stringhe è successo allora, quando usiamo l'operatore + :

Il risultato dovrebbe essere un cambiamento nella cella str. Lui e due righe: “Il nome del nostro sito PureCodeCpp”.

Mentre siamo, ovviamente, non sovraccaricare il +, compilatore “giurare”, dal momento che non si sommano i numeri, e la linea. Ma ora veniamo a sapere come dirglielo, come agire, quando chiediamo di eseguire un'azione non standard, utilizzando +.

ottenere pratica. Definire nell'esempio 4 linee. Avanti, raccogliere un aneddoto, combinandole nel giusto ordine in una sola riga.

Non parliamo circa l'ovvio – proceda all'esame della più sovraccarico. on line 15 vediamo un prototipo di un metodo di classe Sovraccarico: vuoto operatore +(carbonizzare*); Questo metodo causerà all'operatore di lavorare + così, che vogliamo (come si definisce di seguito). Sovraccaricare qualsiasi operatore che si desidera utilizzare la parola chiave operatore. In questo caso,, metodo non restituisce i valori così vuoto, ulteriore parola chiave operatore e l'operatore stesso +. Adotta questo metodo su un puntatore di stringa.

linee 20 – 23 È la definizione del metodo dell'operatore sovraccarico. (Come definire un metodo di classe è descritto nell'articolo Le classi in C ++) esso, utilizzando la funzione strcat_s(str, S); linea ha prodotto un record S fine della riga str (elemento di classe). Atti così – non appena il codice soddisfa l'operatore + che si trova dietro la linea – metodo viene chiamato overloading degli operatori e questa linea verrà trasferita ad esso al cartello.

La funzione principale, abbiamo determinato casualmente 4 linee. visualizzarli sullo schermo (linee 39 – 42). sotto, in linea 44, oggetto dichiarato Scherzo. Al momento della sua creazione, classe di progettazione, purificare elemento di classe str da “spazzatura” e sarà pronto per registrare linee. Basta seguire questi semplici passi (linee 46 – 49) – utilizzando sovraccaricato + scrivere tutte le linee in uno (str) nel giusto ordine.

risultato:

перегрузка операторов c++,  l'overloading degli operatori C ++

tutto è accaduto. altro, come si vede nel risultato, per l'operatore i dati numerici + caricare correttamente. Pertanto, si può tranquillamente essere utilizzato per operazioni aritmetiche nel codice – si compilatore “capirà”. Un altro punto – operatore sovraccarico agisce solo all'interno della classe, per cui è definita. Se definiamo un'altra classe (Overload2 per esempio) ma non lo sopraffare per l'operatore, il tentativo di utilizzare + linee di registrazione che portano ad un errore.




Ci sono un certo numero di eccezioni in C ++ – non tutti gli operatori possono essere sovraccaricati. Ecco un elenco:

перегрузка операторов c++,  l'overloading degli operatori C ++

E un po 'di teoria:

– gli operatori di sovraccarico non è possibile modificare la priorità e l'ordine delle operazioni;

– non vi è alcuna possibilità, via di sovraccarico, creare nuovi simboli per le operazioni;

– operatori binari non possono essere utilizzati per ignorare l'operazione unaria, e viceversa – unario non ignorare un'operazione binaria.

overloading degli operatori, naturalmente, “cosa” interessante. Basta non prendere la mano. Usatelo solo quando è assolutamente necessario – se sarà davvero portare più convenienza, risparmiando tempo e influenzare positivamente la leggibilità del codice. Prova a sovraccaricare gli operatori in modo da, che sia il più vicino possibile al valore logico. Cioè, non è necessario piegare linea, overloading degli operatori , per esempio. È più logico utilizzare +. rilevo, che molti programmatori non piace l'overloading degli operatori, come alcuni eccessivamente affezionato, e diventa difficile leggere il codice. Quindi, valutare attentamente i pro ei contro, decidere l'overloading degli operatori.

Ho intenzione in futuro di scrivere un altro articolo su l'overloading degli operatori, dove gli esempi che vogliono mostrare come sovraccaricare ++ incremento, diminuzione, == uguaglianza, = assegnazione nuovo e cancellare. Se non potevo dimenticare :)

Ci sono i video sul tema. MyNekis Autore.

Per sostenere il nostro sito – cliccare sul salvadanaio e scegliere qualsiasi modo conveniente.

Newsletter nuove lezioni sulla programmazione:

Overloading degli operatori in C ++
3.7 (73.33%) 3 voti

Un pensiero su "Overloading degli operatori in C ++

  1. >> per esempio, quando qualche azione deve essere ripetuta più volte nel codice, e l'uso solo dolorosamente permanente per questa funzione speciale - può sovraccaricare operatore per questo.

    In generale, è vero, ma sovraccarico – E 'un modo elegante per spararsi in un piede (e anche eseguire scatti nulla compagno). Si tratta di una cosa pericolosa. È possibile aumentare la leggibilità del codice, e tutte le spoglie.

    A Myers erano le regole in materia (se non sono conformi – L'inferno ti fanno mantenere il vostro codice tutto 7 cerchi). per esempio:
    – operatore di assegnazione deve restituire un riferimento a questo *;
    – in l'operatore di assegnazione per controllare samoprisvaivaniya;
    – ci tselyyel su sovraccaricare il new e delete, ma IMHO 99% mortali semplicemente non hanno bisogno di toccare questi operatori;
    – funzione di dichiarare, non soci, Quando la conversione tipo deve essere applicato a tutti i parametri.
    Ebbene, una serie di altre regole (un paio di libri).
    Vi suggerisco di prestare attenzione a l'ultima regola nella lista. Hai descritto l'operatore, che lavorano per

    Scherzo + str1;
    Ma non è andare a lavorare per
    str1 + Scherzo;

    Ma sarebbe bello se l'operatore avrebbe funzionato in entrambe le direzioni. E 'abbastanza per fare non è un membro della classe (normale funzione di). Non è difficile? )

Lascia un Commento

L'indirizzo email non verrà pubblicato. i campi richiesti sono contrassegnati *