Funzioni membro const
Contrassegnare i metodi di sola lettura
Funzioni membro const è una lezione C++ Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C++ Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C++ Academy include 4 lezioni in totale.
Che cos'è una funzione membro const
Una funzione membro contrassegnata come const garantisce di non modificare lo stato osservabile dell'oggetto. La parola chiave viene inserita dopo l'elenco dei parametri.
#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";
}Gli oggetti const chiamano metodi const
Su un oggetto const è possibile chiamare soltanto funzioni membro const. I metodi non const sono vietati.
#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 diventa const
All'interno di una funzione membro const, this è un puntatore a const, quindi il compilatore rifiuta qualsiasi tentativo di modificare i membri.
Contrassegni come const ogni metodo di sola lettura
I getter, i metodi di interrogazione e quelli di stampa dovrebbero essere tutti const. In questo modo possono operare su oggetti const e riferimenti const.
Overload const
È possibile fornire sia una versione const sia una versione non const di un metodo; il compilatore sceglie in base al fatto che l'oggetto sia 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";
}La parola chiave mutable
I membri mutable possono cambiare anche all'interno di un metodo const: è utile per cache o contatori che non fanno parte dello stato logico.
#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";
}const logico e const fisico
const protegge lo stato logico dell'oggetto; mutable consente di modificare dettagli dell'implementazione, come le cache, senza violare questa promessa.
Metodi const e riferimenti const
Una funzione che riceve un const& può chiamare su di esso soltanto metodi const: è un ulteriore motivo per contrassegnare le interrogazioni come 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); }Restituire riferimenti const
Gli accessor const spesso restituiscono const& per esporre i membri senza consentirne la modifica o la copia.
Non rimuova const con un cast
Usare const_cast per modificare un oggetto realmente const produce un comportamento indefinito. Per le eccezioni legittime, usi invece mutable.
Classi corrette rispetto a const
Una classe ben progettata contrassegna come const ogni metodo che non modifica lo stato, così può funzionare senza problemi nei contesti const dell'intero programma.
Verifica rapida
Verifichi la propria comprensione delle funzioni membro const.
Riepilogo
Ha imparato a contrassegnare come const i metodi di sola lettura, che gli oggetti const chiamano soltanto metodi const, come effettuare l'overload sulla base di const e come mutable consenta modifiche ai dettagli dell'implementazione. Eviti const_cast e progetti fin dall'inizio classi corrette rispetto a const.
Domande Frequenti
La lezione «Funzioni membro const» è gratuita?
Sì — il testo completo di «Funzioni membro const» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C++ Academy, passa a CoddyKit PRO. Il corso C++ Academy include 4 lezioni in totale.
Cosa imparerò in «Funzioni membro const»?
Contrassegnare i metodi di sola lettura Eserciti C++ Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare C++ Academy?
Non è richiesta alcuna esperienza precedente. C++ Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Funzioni membro const»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione C++ Academy?
Sì. Ogni lezione C++ Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Variabili e parametri const
- Funzioni membro const
- constexpr e tempo di compilazione
- consteval e constinit