auto, decltype et déduction de type
Laisser le compilateur déduire les types avec auto et decltype pour obtenir un code plus lisible
auto, decltype et déduction de type est une leçon C++ Academy gratuite sur CoddyKit. Ceci est la leçon 1 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.
Déduction de types en C++ moderne
Depuis C++11, le compilateur peut déduire les types à de nombreux endroits. Cela rend le code plus court et moins sujet aux erreurs, à condition d'être utilisé avec discernement.
Le mot-clé auto
auto déduit le type à partir de l'initialiseur au moment de la compilation. La variable conserve malgré tout un type fixe, connu statiquement.
auto i = 42; // int
auto d = 3.14; // double
auto s = "hello"; // const char*
auto v = std::vector<int>{1,2,3}; // std::vector<int>auto et const
Par défaut, auto supprime le const et les références de niveau supérieur. Ajoutez-les explicitement lorsque vous souhaitez les conserver.
const int n = 10;
auto a = n; // int (const dropped)
const auto& b = n; // const int&auto avec les itérateurs
Les noms de types d'itérateurs sont longs. auto est particulièrement utile dans ce cas.
std::map<std::string, int> ages = {{"Ada", 30}};
auto it = ages.find("Ada");
// vs std::map<std::string,int>::iterator it = ...Boucle for basée sur une plage et auto
Utilisez auto& pour parcourir les éléments sans les copier.
for (const auto& [name, age] : ages) {
std::cout << name << ": " << age << "\n";
}Types de retour en fin de déclaration
Les fonctions peuvent utiliser auto comme espace réservé pour le type de retour, avec une flèche finale qui précise le type, ce qui est pratique pour les modèles.
auto add(int a, int b) -> int {
return a + b;
}Déduction du type de retour en C++14
C++14 autorise les types de retour auto simples : le compilateur les déduit à partir de l'instruction return.
auto multiply(double x, double y) {
return x * y; // deduced as double
}decltype : obtenir le type d'une expression
decltype(expr) fournit le type de expr au moment de la compilation. Contrairement à auto, il préserve les références et le const.
int x = 0;
int& r = x;
decltype(r) ref = x; // int&
decltype(x) val = 0; // intdecltype(auto)
Combine la déduction avec les règles de decltype — préserve le type exact de l’expression, y compris sa catégorie de valeur.
auto a = some_func(); // copy
decltype(auto) b = some_func(); // exact type, including referencesQuand éviter auto
Évitez auto lorsque le type déduit n’est pas évident — grands littéraux numériques, calculs mixtes ou tailles propres à la plateforme. Soyez explicite pour améliorer la lisibilité.
Style auto presque partout
Certains guides de style recommandent auto pour toutes les variables afin d’éviter les conversions silencieuses. D’autres préfèrent les types explicites. Choisissez une convention et appliquez-la systématiquement.
Vérification rapide
Quelle est la différence entre auto et decltype(auto) lors du renvoi d’une référence ?
Récapitulatif
auto déduit les types à partir des initialiseurs ; decltype indique le type d’une expression ; decltype(auto) déduit le type tout en préservant les références. Utilisez-les pour réduire le code superflu, tout en veillant à rester lisible.
Questions Fréquemment Posées
La leçon « auto, decltype et déduction de type » est-elle gratuite ?
Oui — le texte complet de « auto, decltype et déduction de type » 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 « auto, decltype et déduction de type » ?
Laisser le compilateur déduire les types avec auto et decltype pour obtenir un code plus lisible 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 1 sur 4.
Combien de temps prend la leçon « auto, decltype et déduction de type » ?
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
- auto, decltype et déduction de type
- for basé sur une plage, nullptr et enum class
- Expressions lambda : capture, mutable et génériques
- Liaisons structurées et if-init en C++17