Maison >développement back-end >C++ >« using » peut-il remplacer complètement « typedef » dans C 11 pour les types non-modèles ?

« using » peut-il remplacer complètement « typedef » dans C 11 pour les types non-modèles ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-23 18:57:13278parcourir

Can `using` Completely Replace `typedef` in C  11 for Non-Template Types?

Est-ce que 'using' peut remplacer 'typedef' en C 11 ?

En C 11, 'using' peut désormais définir des alias de type similaires aux 'typedefs' :

typedef int MyInt; // Equivalent to:
using MyInt = int;

Alors que « utiliser » a été initialement introduit pour prendre en charge le modèle typedefs :

template< class T > using MyType = AnotherType< T, MyAllocatorType >;

cela soulève la question de savoir s'il existe des différences subtiles entre « typedef » et « using » lors de la gestion de types autres que des modèles.

Comportement d'alias et implications

« typedef » et « using » créent un alias ou un nouveau nom d’un type existant, plutôt que de définir un nouveau type. Cela signifie que les conversions entre l'alias et le type d'origine sont implicites.

Par conséquent, il n'y a aucune différence entre « typedef » et « using » en termes de comportement d'alias. Les deux constructions créent des alias faibles qui font référence au même type sous-jacent.

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!

Déclaration:
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