Nei miei compiti, devo progettare un messaggio di classe; tra gli altri attributi, ha attributo "priorità" (l'obiettivo principale è implementare la coda di priorità).Sovraccarico di operatore <e operatore> nella stessa classe
Come nel contenitore, devo verificare se un oggetto è maggiore di altri, ho sovraccaricato l'operatore '>'. Ora, ho un paio di domande generali su di esso ...
Domanda uno:
Se io sovraccaricare operatore '>', dovrei sovraccaricare operatore '<' per argomenti (Messaggio const &, const Messaggio &)?
La mia opinione è che il sovraccarico sia> e < e di utilizzarlo nel codice genererà un errore:
if(message1 > message2)
{ ... }
(Fa il seguente codice chiama operatore> per oggetto Message1, o l'operatore < Message2 oggetto?)
Ma, che cosa se uso operatore come questo:
if(message1 < message2)
{ ... }
?
operatore> è dichiarato come amico funzione:
friend bool operator>(const Message& m1, const Message& m2)
Ha bisogno di essere dichiarato come funzione membro?
Grazie.
Grazie, ho letto da qualche parte che se sovraccarico un'operazione di una relazione, sembra razionale sovraccaricarli tutti. –
E grazie della risposta di un amico/membro. Capisco cosa intendi :). –
Questa risposta dovrebbe anche indicare che la maggior parte degli operatori relazionali può essere descritta in termini di una manciata di operatori, in genere '<' e '=='.Ad esempio, 'operator> =' può essere scritto: 'bool operator> = (const T & l, const T & r) {return! (L
greyfade