C++ Academy · Les

const-references en wanneer u ze gebruikt

Geef grote objecten efficiënt en veilig door met const-references

Les 3 van 413 stappen

const-references en wanneer u ze gebruikt is een gratis C++ Academy-les op CoddyKit. Dit is les 3 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.

Wat een const-referentie belooft

Een const T& zegt: "Ik wijzig niets waarnaar ik verwijs." De compiler dwingt dit af.

void print(const std::string& s) {
    // s.clear();   // ERROR: s is const
    std::cout << s;
}

Waarom niet gewoon doorgeven op waarde?

Grote objecten kopiëren is verspilling. Een const-referentie kost vrijwel niets — onderliggend is het gewoon een pointer — en staat de functie nooit toe de gegevens van de aanroeper te wijzigen.

Aan alles binden

Een const-referentie kan aan lvalues, rvalues en tijdelijke waarden worden gebonden — en is daarmee het meest flexibele parametertype voor alleen-lezen-toegang.

void f(const std::string& s);
std::string a = "hi";
f(a);                 // lvalue
f("hello");           // temporary string
f(std::move(a));      // rvalue

Levensduurverlenging

Als je een tijdelijke waarde aan een const-referentie bindt, wordt de levensduur van de tijdelijke waarde verlengd tot die van de referentie. Handig voor inlineconstructie.

const std::string& greeting = "Hello, " + name;
// the concatenated string lives as long as `greeting`

Wanneer je GEEN const-referentie gebruikt

Geef triviaal kopieerbare typen (int, double, pointer) op waarde door. De referentie voegt een indirectie toe zonder iets te besparen.

Const-referentie in een for-lus op basis van een bereik

De standaardlus voor alleen-lezen. Zo voorkom je zowel kopiëren als onbedoelde wijzigingen.

for (const auto& x : container) {
    process(x);
}

Een const-referentie teruggeven

Geef een const-referentie terug wanneer het resultaat een bestaand object is dat de aanroeper niet mag wijzigen, bijvoorbeeld een member of een gecachte waarde.

class Person {
    std::string name_;
public:
    const std::string& name() const { return name_; }
};

Const-correctheid

Markeer elke parameter en memberfunctie die de toestand niet wijzigt als const. De compiler ontdekt onbedoelde schrijfbewerkingen — een krachtig vangnet.

Const-memberfuncties

Een memberfunctie met const na de parameterlijst kan het object niet wijzigen. Ze wordt aangeroepen op const-instanties.

class Counter {
    int n_ = 0;
public:
    int value() const { return n_; }   // pure reader
    void increment() { n_++; }
};

Valkuil: const_cast verwijdert const

Je kunt const verwijderen met const_cast — maar als je dit doet met een oorspronkelijk const-object, is het gedrag ongedefinieerd. Gebruik dit alleen bij koppelingen met verouderde niet-const-API's.

Mutable voor interne toestand

Met het sleutelwoord mutable kan een const-memberfunctie specifieke members wijzigen — handig voor cachegebruik of mutexen.

class Cache {
    mutable std::mutex mtx_;
    mutable std::optional<int> cached_;
public:
    int value() const {
        std::lock_guard<std::mutex> lk(mtx_);
        // ...
    }
};

Korte controle

Waarom is het meestal beter om const std::string& dan std::string voor een parameter te schrijven?

Samenvatting

Gebruik const T& voor alleen-lezenparameters, retourwaarden van getters en for-lussen op basis van een bereik. Dit is voor niet-triviale typen sneller dan doorgeven op waarde en veiliger dan niet-const-referenties.

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 “const-references en wanneer u ze gebruikt” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad C++ Academy, waaronder “const-references en wanneer u ze gebruikt”, 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 “const-references en wanneer u ze gebruikt”?

Geef grote objecten efficiënt en veilig door met const-references 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 3 van 4.

Hoe lang duurt de les “const-references en wanneer u ze gebruikt”?

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. Waarom references aliassen voor variabelen zijn
  2. Doorgeven op waarde versus doorgeven per reference
  3. const-references en wanneer u ze gebruikt
  4. Levensduur van references en dangling references
← Terug naar C++ Academy