Maison > développement back-end > C++ > Quelle est la différence entre les mots clés « typedef » et « using » de C pour les alias de type ?

Quelle est la différence entre les mots clés « typedef » et « using » de C pour les alias de type ?

Linda Hamilton
Libérer: 2024-12-21 04:53:13
original
619 Les gens l'ont consulté

What's the Difference Between C  's `typedef` and `using` Keywords for Type Aliases?

Quelle est la différence entre 'typedef' et 'using' en C ?

En C 11, le mot-clé 'using' peut être utilisé pour créer des alias de type similaires au mot-clé traditionnel 'typedef'. Bien que les deux syntaxes obtiennent le même résultat en attribuant un nouveau nom à un type existant, il existe des différences subtiles dans leur sémantique à prendre en compte.

« using » est-il équivalent à « typedef » ?

Selon le standard C (7.1.3.2), 'using' introduit un nom de typedef avec une sémantique identique comme s'il s'agissait de défini en utilisant 'typedef'. Cela signifie que « utiliser » ne crée pas un nouveau type mais fournit plutôt un nom alternatif pour un type existant. Les conversions entre ces noms sont implicites.

Différences sémantiques

Malgré leur syntaxe et leur sémantique similaires, le mot-clé 'using' diffère de 'typedef' des manières suivantes :

  • Alias ​​faible : 'typedef' crée un alias "faible", ce qui signifie qu'il ne redéfinit pas le type d'origine. 'using', en revanche, ne peut pas être utilisé pour créer des alias faibles.
  • Alias ​​de type de modèle : 'using' peut être utilisé pour créer des alias de type de modèle, alors que 'typedef' ne le peut pas. . Par exemple :
template<typename T>
using MyType = AnotherType<T, MyAllocatorType>;
Copier après la connexion

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