C++ Academy · Les

Rekenkundige en vergelijkingsoperatoren

Overload +, -, *, /, ==, < en friends volgens best practices

Les 1 van 413 stappen

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);     // postfix

Vergelijkingsoperatoren

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-resolutie
  • sizeof, 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.

Gratis beginnen

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

  1. Rekenkundige en vergelijkingsoperatoren
  2. Stream-invoeg- en extractieoperatoren
  3. Subscript- en functieaanroepoperatoren
  4. Three-way comparison-operator in C++20
← Terug naar C++ Academy