0Pricing
C++ Academy · Leçon

for basé sur une plage, nullptr et enum class

Utiliser les fonctionnalités pratiques de C++11 : for basé sur une plage, nullptr et énumérations fortement typées

for basé sur une plage, nullptr et enum class 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.

Trois améliorations rapides de C++11

C++11 a apporté de nombreuses petites améliorations. Voici trois fonctionnalités que vous utiliserez chaque jour : range-based for, nullptr et enum class.

Récapitulatif des boucles fondées sur une plage

Parcourez tout conteneur qui possède begin() et end(), sans calcul d’indices.

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

Ce que cela remplace

La boucle verbeuse fondée sur des itérateurs devient une seule ligne.

// Before C++11
for (std::vector<int>::iterator it = v.begin(); it != v.end(); ++it) {
    process(*it);
}

nullptr est préférable à NULL

nullptr est un littéral de pointeur nul typé. Il évite l’ambiguïté de résolution de surcharge de NULL (une macro représentant 0).

void f(int);
void f(int*);

f(NULL);      // calls f(int)
f(nullptr);   // calls f(int*)

Pourquoi nullptr est préférable

Utilisez nullptr systématiquement :

  • Type distinct (std::nullptr_t)
  • Intention plus claire
  • Fonctionne en métaprogrammation de modèles
  • Ne peut pas être converti accidentellement en int

Énumération simple&nbsp;: un piège

Les anciennes énumérations exposent leurs noms dans la portée englobante et se convertissent implicitement en int.

enum Color { RED, GREEN, BLUE };
int c = RED;            // implicit conversion, no warning
// RED, GREEN, BLUE leak into global scope

enum class&nbsp;: portée et typage

enum class de C++11 exige une qualification et interdit la conversion implicite en int.

enum class Color { Red, Green, Blue };
Color c = Color::Red;
// int n = Color::Red;     // ERROR
std::cout << static_cast<int>(c);   // explicit conversion

Spécifier le type sous-jacent

Vous pouvez fixer la taille de stockage d’une enum class à un type entier précis.

enum class Status : uint8_t { OK = 0, FAIL = 1, RETRY = 2 };

Déclarer enum class à l’avance

Comme le type sous-jacent est connu, les enum class peuvent être déclarées à l’avance — ce qui est pratique pour séparer les inclusions de fichiers d’en-tête.

// header A
enum class Color : int;

// header B (full definition)
enum class Color : int { Red, Green, Blue };

Quand une énumération simple convient

Les énumérations simples restent utiles : pour les masques de bits d’indicateurs entiers lorsque vous souhaitez réellement une conversion implicite. Documentez explicitement ce choix de conception.

Conseil de migration

Lors de la modernisation d’une base de code, convertissez progressivement les énumérations simples en enum class. Recherchez les endroits qui reposent sur une conversion implicite en int et ajoutez static_cast.

Vérification rapide

Pourquoi enum class est-elle plus sûre qu’une simple enum ?

Récapitulatif

Trois améliorations rapides de C++11 : la boucle fondée sur une plage réduit le code répétitif des itérateurs, nullptr remplace NULL et enum class fournit des énumérations à portée limitée et sûres du point de vue du typage. Utilisez ces trois fonctionnalités par défaut.

Questions Fréquemment Posées

La leçon « for basé sur une plage, nullptr et enum class » est-elle gratuite ?

Oui — le texte complet de « for basé sur une plage, nullptr et enum class » 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 « for basé sur une plage, nullptr et enum class » ?

Utiliser les fonctionnalités pratiques de C++11 : for basé sur une plage, nullptr et énumérations fortement typées 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 « for basé sur une plage, nullptr et enum class » ?

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. auto, decltype et déduction de type
  2. for basé sur une plage, nullptr et enum class
  3. Expressions lambda : capture, mutable et génériques
  4. Liaisons structurées et if-init en C++17
← Retour à C++ Academy