Maison > développement back-end > C++ > Quand \'auto\' déduit-il une valeur par rapport à une référence en C 11 ?

Quand \'auto\' déduit-il une valeur par rapport à une référence en C 11 ?

Patricia Arquette
Libérer: 2024-11-03 08:40:03
original
793 Les gens l'ont consulté

When Does

Sémantique "auto" C 11

En C 11, le mot clé "auto" permet au compilateur de déduire automatiquement le type d'un variable. Comprendre les règles de cette déduction est crucial pour déterminer si « auto » donnera lieu à une valeur ou à un type de référence.

Déduction de type pour valeur et référence

Le principal Le principe régissant la déduction de type est que le type d'« auto » est déterminé par la manière dont elle est déclarée. Par exemple :

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

Dans l'exemple ci-dessus, "a1" est déduit comme une valeur entière, tandis que "a2" est déduit comme une référence entière.

Exemples

1. Renvoyer une référence :

<code class="cpp">const std::shared_ptr<Foo>& get_foo();
auto p = get_foo();</code>
Copier après la connexion

Dans ce cas, "auto" déduit un type de référence car "get_foo()" renvoie une référence const.

2. Pointeur statique :

<code class="cpp">static std::shared_ptr<Foo> s_foo;
auto sp = s_foo;</code>
Copier après la connexion

Ici, "auto" déduit un type de valeur car "s_foo" est un pointeur statique, qui n'est pas une référence.

3. Boucle sur un conteneur de pointeurs :

<code class="cpp">std::vector<std::shared_ptr<Foo>> c;
for (auto foo : c) {</code>
Copier après la connexion

Dans cette boucle, "auto" garantit que "foo" est déduit comme un pointeur partagé vers Foo. Chaque itération crée une copie de valeur du pointeur.

Conclusion

Pour résumer, les règles de déduction de type pour « auto » en C 11 sont simples. Si l'expression d'initialisation est une valeur, "auto" en déduit un type valeur. Si l'expression d'initialisation est une référence, "auto" en déduit un type référence. Comprendre ces règles est essentiel pour utiliser efficacement « auto » et éviter les comportements inattendus.

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