const-medlemsfunksjoner
Marker skrivebeskyttede metoder
const-medlemsfunksjoner er en gratis leksjon i C++ Academy på CoddyKit. Dette er leksjon 2 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i C++ Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i C++ Academy inneholder totalt 4 leksjoner.
Hva en const-medlemsfunksjon er
En medlemsfunksjon som er merket med const, lover å ikke endre objektets observerbare tilstand. Nøkkelordet plasseres etter parameterlisten.
#include <iostream>
class Counter {
int n = 0;
public:
int value() const { return n; } // read-only
void inc() { ++n; }
};
int main() {
Counter c;
c.inc();
std::cout << c.value() << "\n";
}const-objekter kaller const-metoder
På et const-objekt kan du bare kalle const-medlemsfunksjoner. Ikke-const-metoder er ikke tillatt.
#include <iostream>
class Counter {
int n = 0;
public:
int value() const { return n; }
void inc() { ++n; }
};
int main() {
const Counter c;
std::cout << c.value() << "\n"; // OK
// c.inc(); // ERROR
}this blir const
Inne i en const-medlemsfunksjon er this en peker til const, så kompilatoren avviser alle forsøk på å endre medlemmer.
Merk alle skrivebeskyttede metoder med const
Gettere, spørringsmetoder og utskriftsmetoder bør alle være const. Da kan de brukes på const-objekter og const-referanser.
const-overlagring
Du kan tilby både en const- og en ikke-const-versjon av en metode. Kompilatoren velger basert på om objektet er const.
#include <iostream>
#include <vector>
class Box {
std::vector<int> v{1, 2, 3};
public:
int& at(int i) { return v[i]; } // mutable access
const int& at(int i) const { return v[i]; } // read-only access
};
int main() {
Box b;
b.at(0) = 99;
std::cout << b.at(0) << "\n";
}Nøkkelordet mutable
mutable-medlemmer kan endres selv inne i en const-metode – nyttig for hurtigbuffere eller tellere som ikke er en del av den logiske tilstanden.
#include <iostream>
class Cache {
mutable int hits = 0;
int data = 42;
public:
int get() const { ++hits; return data; } // hits is mutable
int hitCount() const { return hits; }
};
int main() {
Cache c;
c.get(); c.get();
std::cout << c.hitCount() << "\n";
}Logisk og fysisk const
const beskytter objektets logiske tilstand, mens mutable lar implementasjonsdetaljer som hurtigbuffere endres uten å bryte dette løftet.
const-metoder og const-referanser
En funksjon som mottar en const&, kan bare kalle const-metoder på objektet – enda en grunn til å merke spørringsmetoder med const.
#include <iostream>
class Counter {
int n = 5;
public:
int value() const { return n; }
};
void report(const Counter& c) {
std::cout << c.value() << "\n"; // needs value() to be const
}
int main() { Counter c; report(c); }Returnere const-referanser
Const-aksessorer returnerer ofte const& for å eksponere medlemmer uten å tillate endring eller kopiering.
Ikke fjern const
Hvis du bruker const_cast til å endre et objekt som faktisk er const, får du udefinert oppførsel. Bruk heller mutable for legitime unntak.
const-korrekte klasser
En godt utformet klasse merker alle metoder som ikke endrer tilstanden, med const, slik at den fungerer sømløst i const-kontekster i hele programmet.
Hurtigsjekk
Test forståelsen din av const-medlemsfunksjoner.
Oppsummering
Du har lært å merke skrivebeskyttede metoder med const, at const-objekter bare kaller const-metoder, hvordan du overlagrer på grunnlag av const, og hvordan mutable tillater endringer i implementasjonsdetaljer. Unngå const_cast, og utform const-korrekte klasser fra starten.
Lær deg C++ med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 51
- Leksjoner
- 203
Ofte stilte spørsmål
Er leksjonen «const-medlemsfunksjoner» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien C++ Academy, inkludert «const-medlemsfunksjoner», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i C++ Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «const-medlemsfunksjoner»?
Marker skrivebeskyttede metoder Du øver på C++ Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med C++ Academy?
Ingen tidligere erfaring er nødvendig. C++ Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «const-medlemsfunksjoner»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne C++ Academy-leksjonen?
Ja. Alle C++ Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- const-variabler og -parametere
- const-medlemsfunksjoner
- constexpr og kompileringstid
- consteval og constinit