Operatotor <= implementieren obwohl == und < vorhanden ist?
-
Hallo,
wenn ich in einer Klasse den operator == implementiert habe, kann ich ja auch != Abfragen machen.
Gilt das gleiche dann auch für den <= operator wenn der == und < operator implementiert ist?
-
Unwi schrieb:
Hallo,
wenn ich in einer Klasse den operator == implementiert habe, kann ich ja auch != Abfragen machen.
Gilt das gleiche dann auch für den <= operator wenn der == und < operator implementiert ist?Nein, und die Prämisse ist ebenfalls unzutreffend.
-
Unwi schrieb:
wenn ich in einer Klasse den operator == implementiert habe, kann ich ja auch != Abfragen machen.
Grundsätzlich musst du immer alle Operatoren definieren. operator== implizert nicht operator!=. Wenn du Schreibfaul bist gibt es für solche Fälle in der Boost-Bibliothek Aushilfe.
cu André
-
also heist dass man folgendes nicht machen sollte
class foo { public: bool operator == (foo const& rhs) { if ( this->a == rhs.a ) return true; else return false; } bool operator != (foo const& rhs) { if ( (*this) == rhs ) // also sowas nicht machen??? return false; else return true; } private: int a; }weil genau das hab ich vorhin bei einer klasse gemacht xD
-
Skym0sh0 schrieb:
also heist dass man folgendes nicht machen sollte
...
weil genau das hab ich vorhin bei einer klasse gemacht xDLies dir nochmal dein ersten Post durch, überlege dir was dann die Antwortenden gedacht haben müssen, und überdenk nochmal deine Schlußfolgerung.
Kurz gesagt: Du kannst natürlich Operatoren so definieren das sie auf andere zurückgreifen (Dies wird z.B. bei += und + sehr häufig gemacht). Wie du es aber geschrieben hattest, konnte man daraus eigentlich nur annehmen, das du nur den einen operator geschrieben hast.
cu André
-
achso *gegen kopf schlag*
stimmt jez hab ichs verstanden...
ok alles klar