Maison > développement back-end > C++ > Quand devez-vous utiliser l'opérateur flèche dans les en-têtes de fonction C ?

Quand devez-vous utiliser l'opérateur flèche dans les en-têtes de fonction C ?

DDD
Libérer: 2024-11-13 05:43:02
original
710 Les gens l'ont consulté

When Should You Use the Arrow Operator in C   Function Headers?

Opérateur de flèche dans les en-têtes de fonction

En C 11 et versions ultérieures, deux syntaxes existent pour les déclarations de fonction :

Syntaxe traditionnelle :

return-type identifier(argument-declarations...)
Copier après la connexion

Moderne Syntaxe :

auto identifier(argument-declarations...) -> return_type
Copier après la connexion

Les deux syntaxes sont équivalentes. Cependant, la syntaxe moderne offre un moyen pratique de déduire le type de retour à partir des types d’arguments. Ceci est particulièrement utile lors de l'utilisation du spécificateur decltype, qui vous permet de décrire le type d'une expression.

Dans les versions C précédentes, vous écririez :

template <typename T1, typename T2>
decltype(a + b) compose(T1 a, T2 b);
Copier après la connexion

Cependant, le compilateur Je ne sais pas ce que sont a et b lorsque vous essayez de déterminer le type de retour.

Pour résoudre ce problème, vous pouvez utiliser declval :

template <typename T1, typename T2>
decltype(std::declval<T1>() + std::declval<T2>())
compose(T1 a, T2 b);
Copier après la connexion

Cependant, cela devient verbeux. Au lieu de cela, la syntaxe moderne vous permet d'écrire :

template <typename T1, typename T2>
auto compose(T1 a, T2 b) -> decltype(a + b);
Copier après la connexion

Cette syntaxe est plus concise et conserve les mêmes règles de portée.

Mise à jour C 14 :

C 14 permet l'utilisation de la syntaxe suivante :

auto identifier(argument-declarations...)
Copier après la connexion

tant que la fonction est entièrement définie avant utilisation et toutes les instructions return déduisent le même type.

Cas d'utilisation :

La syntaxe de l'opérateur fléché (->) reste utile pour les fonctions publiques déclarées dans les fichiers d'en-tête où vous souhaitez masquer l'implémentation dans le fichier source. Ceci est particulièrement pertinent pour les fonctions de modèle ou les types concrets spécialisés dérivés de la métaprogrammation de modèles.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal