0Pricing
C++ Academy · Leçon

Fonctions membres const

Marquer les méthodes en lecture seule

Fonctions membres const est une leçon C++ Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C++ Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C++ Academy comprend 4 leçons au total.

Qu'est-ce qu'une fonction membre const

Une fonction membre marquée const garantit qu'elle ne modifiera pas l'état observable de l'objet. Le mot-clé se place après la liste des paramètres.

#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";
}

Les objets const appellent des méthodes const

Sur un objet const, vous ne pouvez appeler que des fonctions membres const. Les méthodes non const sont interdites.

#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` devient const

Dans une fonction membre const, this est un pointeur vers une valeur const ; le compilateur rejette donc toute tentative de modifier des membres.

Marquer const toute méthode en lecture seule

Les accesseurs en lecture, les fonctions d'interrogation et les fonctions d'affichage doivent tous être const. Ils peuvent ainsi fonctionner sur des objets const et des références const.

Surcharge selon const

Vous pouvez fournir une version const et une version non const d'une méthode ; le compilateur choisit selon que l'objet est const ou non.

#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";
}

Le mot-clé mutable

Les membres mutable peuvent changer même dans une méthode const — ce qui est utile pour les caches ou les compteurs qui ne font pas partie de l'état logique.

#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 logique et const physique

const protège l'état logique de l'objet ; mutable permet aux détails d'implémentation, comme les caches, de changer sans rompre cette garantie.

Méthodes const et références const

Une fonction qui reçoit une const& ne peut appeler sur celle-ci que des méthodes const — une raison supplémentaire de marquer les fonctions d'interrogation comme 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); }

Retourner des références const

Les accesseurs const renvoient souvent une const& afin d'exposer des membres sans autoriser leur modification ni leur copie.

Ne pas supprimer const par transtypage

Utiliser const_cast pour modifier un objet réellement const entraîne un comportement indéfini. Utilisez plutôt mutable pour les exceptions légitimes.

Classes respectant la const-correctitude

Une classe bien conçue marque chaque méthode qui ne modifie pas l'objet avec const, afin qu'elle fonctionne naturellement dans les contextes const de tout le programme.

Vérification rapide

Vérifiez votre compréhension des fonctions membres const.

Récapitulatif

Vous avez appris à marquer const les méthodes en lecture seule, que les objets const n'appellent que des méthodes const, comment surcharger selon const et comment mutable permet de modifier des détails d'implémentation. Évitez const_cast et concevez dès le départ des classes respectant la const-correctitude.

Questions Fréquemment Posées

La leçon « Fonctions membres const » est-elle gratuite ?

Oui — le texte complet de « Fonctions membres const » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C++ Academy, passe à CoddyKit PRO. Le cours C++ Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Fonctions membres const » ?

Marquer les méthodes en lecture seule Tu pratiques C++ Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C++ Academy ?

Aucune expérience préalable n'est requise. C++ Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Fonctions membres const » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C++ Academy ?

Oui. Chaque leçon C++ Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Variables et paramètres const
  2. Fonctions membres const
  3. constexpr et évaluation à la compilation
  4. consteval et constinit
← Retour à C++ Academy