kennen:include:compare
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
— | kennen:include:compare [2020-07-25 09:37] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== < | ||
+ | ===== Dreiwegevergleich ===== | ||
+ | |||
+ | Binde diesen Header ein, um den Dreiwegevergleich (" | ||
+ | [[kennen: | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | Alle Vergleichsoperatoren werden damit nutzbar. | ||
+ | Der Operator kann vom Compiler generiert | ||
+ | |||
+ | <code cpp spaceship_default.cpp> | ||
+ | #include < | ||
+ | #include < | ||
+ | |||
+ | struct Foo | ||
+ | { | ||
+ | int x, y; | ||
+ | auto operator< | ||
+ | }; | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | Foo a{1,3}, b{2,1}; | ||
+ | |||
+ | assert( | ||
+ | (a < b) && | ||
+ | (a <= b) && | ||
+ | !(a == b) && | ||
+ | (a != b) && | ||
+ | !(a >= b) && | ||
+ | !(a > b) | ||
+ | ); | ||
+ | } | ||
+ | </ | ||
+ | oder selbst definiert werden. Dann wird der Gleichheitsoperator nicht automatisch mit generiert: | ||
+ | <code cpp spaceship_own.cpp> | ||
+ | #include < | ||
+ | #include < | ||
+ | |||
+ | struct rational | ||
+ | { | ||
+ | int d = 0, n = 1; | ||
+ | auto operator< | ||
+ | bool operator== (const rational& | ||
+ | auto operator< | ||
+ | bool operator== (int number) const { return d == n * number; } | ||
+ | }; | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | rational a, b{1, 2}; | ||
+ | assert( a != b && 1 > b ); | ||
+ | } | ||
+ | </ | ||
+ | Auch Vergleiche mit anderen Typen können überladen werden. | ||
+ | Unterscheiden sich die Typen der Operanden, sind sowohl '' | ||
+ | Aus '' | ||
+ | Da aber kein '' | ||
+ | |||
+ | ===== Kategorien ===== | ||
+ | Der Header ''< | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | | ||
+ | Der vom Compiler erzeugte Vergleich liefert das lexikographische Ergebnis der Komponenten in der Reihenfolge ihrer Definition. | ||
+ | Als Rückgabetyp kommt die stärkste gemeinsame Vergleichskategorie zum Einsatz. | ||
+ | |||
+ | ===== Funktionsadapter ===== | ||
+ | |||
+ | Die Struktur '' | ||
+ | Vergleiche dazu [[kennen: | ||
+ | |||
+ | |||
+ | |||
kennen/include/compare.txt · Zuletzt geändert: 2020-07-25 09:37 von 127.0.0.1