Rekenkundige en vergelijkingsoperatoren
Overload +, -, *, /, ==, < en friends volgens best practices
Rekenkundige en vergelijkingsoperatoren is een gratis C++ Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject C++ Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus C++ Academy bevat in totaal 4 lessen.
Waarom operators overladen?
Door operators te overladen gedragen je typen zich als ingebouwde typen — v1 + v2 leest beter dan v1.add(v2). Gebruik dit voor waardetypen zoals vectoren, complexe getallen en geldbedragen.
operator+ definiëren
Je kunt + overladen als lid of als vrije functie. Vrije functies zijn symmetrischer.
struct Vec2 {
double x, y;
Vec2 operator+(const Vec2& other) const {
return {x + other.x, y + other.y};
}
};Vorm met een vrije functie
Een vrije functie geeft beide operanden dezelfde status — handig wanneer conversie op beide kanten kan worden toegepast.
Vec2 operator+(const Vec2& a, const Vec2& b) {
return {a.x + b.x, a.y + b.y};
}Samengestelde toewijzingsoperatoren
Implementeer eerst += en bouw daarna + daarop. Dit is het gebruikelijke idioom.
Vec2& operator+=(const Vec2& other) {
x += other.x;
y += other.y;
return *this;
}
Vec2 operator+(Vec2 lhs, const Vec2& rhs) {
lhs += rhs;
return lhs;
}Unaire operatoren
Sommige operatoren zijn unair: -x, +x, !x, ~x, ++x, --x.
Vec2 operator-() const { return {-x, -y}; }Prefix- versus postfix-increment
Een prefix heeft geen parameter; een postfix gebruikt een dummy-int om het onderscheid te maken.
Counter& operator++(); // prefix
Counter operator++(int); // postfixVergelijkingsoperatoren
Vergelijkingsoperatoren retourneren bool. Vrije functies werken het best voor consistentie.
bool operator==(const Vec2& a, const Vec2& b) {
return a.x == b.x && a.y == b.y;
}
bool operator!=(const Vec2& a, const Vec2& b) { return !(a == b); }Kleiner-dan voor ordening
Als je type moet kunnen worden gesorteerd of als sleutel in een map moet kunnen worden gebruikt, definieer dan operator<. De andere relationele operatoren volgen daaruit.
Symmetrische operatoren voor gemengde typen
Als je zowel 3 + vec als vec + 3 wilt ondersteunen, definieer je beide — of gebruik je een vrije functie die converteert.
Vermijd verrassingen
Overladen operatoren moeten intuïtief werken. Definieer + niet opnieuw zodat het aftrekken betekent. Houd je aan de gebruikelijke algebraïsche betekenis van de operator.
Operatoren die je niet kunt overbelasten
Sommige operatoren zijn verboden terrein:
?:— ternaire operator.— toegang tot leden (maar->kan wel worden overbelast)::— scope-resolutiesizeof,alignof,typeid
Korte controle
Wat is het canonieke implementatiepatroon voor operator+ op een gebruikerstype?
Samenvatting
Met operatoroverloading voelen gebruikerstypen natuurlijk aan. Implementeer eerst samengestelde toewijzing en daarna gewone rekenkundige operatoren. Vergelijkingsoperatoren kun je het beste als vrije functies definiëren. Houd je aan de conventionele semantiek — verrassingen zijn fouten.
Leer C++ met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 51
- Lessen
- 203
Veelgestelde vragen
Is de les “Rekenkundige en vergelijkingsoperatoren” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad C++ Academy, waaronder “Rekenkundige en vergelijkingsoperatoren”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus C++ Academy bevat in totaal 4 lessen.
Wat leer ik in “Rekenkundige en vergelijkingsoperatoren”?
Overload +, -, *, /, ==, < en friends volgens best practices Je oefent met C++ Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met C++ Academy te beginnen?
Ervaring vooraf is niet nodig. C++ Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.
Hoe lang duurt de les “Rekenkundige en vergelijkingsoperatoren”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over C++ Academy?
Ja. Elke les over C++ Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Rekenkundige en vergelijkingsoperatoren
- Stream-invoeg- en extractieoperatoren
- Subscript- en functieaanroepoperatoren
- Three-way comparison-operator in C++20