W mojej pracy domowej muszę zaprojektować wiadomość klasy; wśród innych atrybutów ma atrybut "priorytet" (głównym celem jest zaimplementowanie kolejki priorytetów).Przeciążanie operatora <i operatora> w tej samej klasie
Podobnie jak w kontenerze muszę sprawdzić, czy jeden obiekt jest większy od drugiego, czy mam przeciążony operator ">". Teraz mam kilka ogólnych pytań o to ...
Pytanie pierwsze:
Gdybym przeciążać operator '>', powinien przeciążać operatora '<' dla argumentów (const Wiadomość &, const Wiadomość &)?
Moja opinia jest taka, że przeciążenia zarówno> i < i używanie go w kodzie wygeneruje błąd:
if(message1 > message2)
{ ... }
(czy następujący kod wywołuje operator> dla obiektu message1 lub operator < komunikat2 obiekt?)
Ale co, jeśli mogę użyć operatora tak:
if(message1 < message2)
{ ... }
?
operator> jest zadeklarowana jako znajomego funkcję:
friend bool operator>(const Message& m1, const Message& m2)
Czy to muszą być deklarowane jako funkcja członkiem?
Dziękuję.
Dziękuję, przeczytałem gdzieś, że jeśli przeciążę jedną operację relacji, wydaje mi się racjonalne przeładowanie wszystkich z nich. –
I dziękuję ci za odpowiedź przyjaciela/członka. Rozumiem, co masz na myśli :). –
Ta odpowiedź powinna również wskazywać, że większość operatorów relacyjnych można opisać za pomocą kilku operatorów, zwykle '<' i '=='.Na przykład można wpisać 'operator> =': operator bool> = (const T & l, const T & r) {return! (L
greyfade