Maison > développement back-end > C++ > le corps du texte

Comment \'auto\' détermine-t-il la valeur par rapport aux types de référence en C 11 ?

Susan Sarandon
Libérer: 2024-11-04 07:53:31
original
143 Les gens l'ont consulté

How Does

Déduction de type Sémantique de "auto" en C 11

En C 11, le mot-clé "auto" déduit le type d'une variable à partir de le type de son initialiseur. Cependant, déterminer si « auto » se résout en une valeur ou une référence peut parfois être ambigu.

Valeur vs référence

La règle clé pour la déduction de type avec « auto » " est que le type déduit est équivalent au type déclaré.

  • Si le type déclaré est un type valeur, "auto" se résoudra en un valeur.
  • Si le type déclaré est un type de référence, "auto" sera résolu en une référence.

Exemples

  • auto i = v.begin(); - Puisque v.begin() renvoie un itérateur par valeur, "auto" se résout en une valeur.
  • const std::shared_ptr& get_foo(); - Le type de la fonction est une référence, donc "auto" sera résolu en une référence.
  • static std::shared_ptr s_foo; - Le type de la variable est un pointeur, donc "auto" sera résolu en une valeur.
  • std::vector> c; - Le type du conteneur est un vecteur de pointeurs, donc "auto" se résoudra en une valeur.

Déduction de type

L'exemple suivant démontre le comportement de déduction de type :

<code class="cpp">int i = 5;
auto a1 = i;    // value
auto &a2 = i;  // reference</code>
Copier après la connexion

Dans cet exemple, "a1" est de type int (valeur), tandis que "a2" est de type int& (référence).

Conclusion

Comprendre la sémantique de déduction de type de « auto » est crucial pour écrire du code C correct et efficace. En adhérant à la règle de résolution « automatique » du type déclaré, les développeurs peuvent déduire avec précision les types de variables et tirer parti des avantages de cette fonctionnalité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!