Accueil Finances personnelles ÉNumérations fortement typées en C ++ - les mannequins

ÉNumérations fortement typées en C ++ - les mannequins

Vidéo: Tutoriel C++ - énumérations fortement typées 2025

Vidéo: Tutoriel C++ - énumérations fortement typées 2025
Anonim

La programmation est une question de lisibilité. Il est difficile (en fait c'est impossible) d'écrire et de maintenir un programme que vous ne pouvez pas lire. Une partie de la lecture d'une liste de codes source consiste à comprendre ce que les chiffres utilisés dans le programme représentent. L'aide la plus élémentaire que fournit C ++ est l'omniprésente #define, comme dans l'exemple souvent cité:

#define PI 3. 141592653589793

Cette solution est acceptable pour les valeurs individuelles, bien qu'elle souffre du fait que le Le mécanisme #define n'est pas (strictement parlant) une partie de C / C ++ puisque le préprocesseur s'exécute avant le compilateur. En réponse à cela, C ++ 2011 a introduit une construction expression constante :

constexpr long double PI = 3. 141592653589793;

Le mot-clé constexpr introduit des constantes dans la tente C ++. Ce PI a un type réel, comme les autres variables C ++. C ++ peut générer des messages d'erreur avec PI qui ont beaucoup plus de sens que ceux impliquant 3. 14159.

Les expressions constantes conviennent aux valeurs constantes individuelles, mais souvent les constantes représentent des ensembles de choses plutôt que des constantes naturelles, comme dans l'exemple suivant:

#define DC_OR_TERRITORY 0 #define ALABAMA 1 #define ALASKA 2 #define ARKANSAS 3 // … et ainsi de suite …

On peut supposer que ces constantes sont utilisées pour identifier les états, peut-être utilisés comme un index dans un tableau d'objets d'état ou en tant que valeur dans une base de données quelque part.

C ++ a longtemps eu un mécanisme amélioré pour définir ces types de constantes - l'énumération:

enum STATE {DC_OR_TERRITORY, // obtient 0 ALABAMA, // obtient 1 ALASKA, // obtient 2 ARKANSAS, // … et bientôt…};

Le mot-clé enum introduit une séquence de constantes appelée "énumération". Dans ce cas, l'énumération porte le nom STATE. Chaque élément de cette énumération reçoit une valeur commençant à 0 et augmentant séquentiellement de 1, donc DC_OR_TERRITORY est défini comme 0, ALABAMA est défini sur 1, et ainsi de suite. Vous pouvez remplacer ce séquençage incrémental en utilisant une instruction assign comme suit:

enum STATE {DC, TERRITOIRE = 0, ALABAMA, ALASKA, // … et ainsi de suite …};

Cette version de STATE définit un élément DC, qui reçoit la valeur 0. Il définit ensuite un nouvel élément TERRITORY, auquel est également affectée la valeur 0. ALABAMA décroche avec 1, comme précédemment.

En pratique, le programmeur peut utiliser des énumérations pour écrire du code très lisible comme:

double taxRate (STATE s) {return taxRatesByState [s];}

Le seul problème de cette approche est que cette énumération ne crée pas un nouveau type (comme vous pourriez le penser).En fait, selon la norme, STATE est juste un autre nom pour int - et les constantes ALABAMA, ALASKA, et ainsi de suite sont tous de type const int.

Le compilateur gcc fournit réellement une énumération déclarée de cette manière un peu plus d'autorité que de simplement l'appeler une autre forme de int. Vous pouvez réellement surcharger des fonctions basées sur un type enum:

void fn (STATE s); void fn (int n); fn (ALASKA); // appelle fn (STATE)

La norme 2011 permet au programmeur de créer un type complètement nouveau en utilisant le mot-clé enum. Les créateurs de la nouvelle norme ne voulant pas casser le code existant, la norme requiert l'ajout d'un mot-clé supplémentaire pour définir un type d'énumération, comme dans l'exemple suivant:

enum class ETAT {DC, TERRITOIRE = 0, ALABAMA, ALASKA, // … et ainsi de suite …};

Une classe d'énumération est maintenant un type à échelle réelle comme toute autre classe définie par l'utilisateur. Ce qui suit n'est même plus légal pour deux raisons:

int s = ALASKA;

Premièrement, la constante ALASKA n'est définie que dans l'espace de noms STATE. Ainsi, le nom de la constante est STATE:: ALASKA. Deuxièmement, le type n'est pas int mais STATE. Vous ne pouvez pas affecter une valeur de type STATE à un int.

ETAT s = ETAT:: ALASKA;

Le programmeur peut transformer un STATE en un int mais il doit le faire explicitement - les conversions implicites ne le coupent pas avec les classes d'énumération:

int n = (int) STATE:: ALASKA;

Ce nouveau type d'énumération peut également être basé sur l'un des autres types de nombres compteurs sauf int:

enum class STATE: char {DC, // … le reste de la déclaration est identique
ÉNumérations fortement typées en C ++ - les mannequins

Le choix des éditeurs

Les bons outils pour la photographie macro - les nuls

Les bons outils pour la photographie macro - les nuls

Vous avez de nombreuses options pour l'équipement pour capturer des gros plans macro photographies. Vous avez peut-être déjà une caméra qui prend de superbes photos en gros plan. Macro photographie signifie créer une image dans laquelle le sujet est représenté sur le capteur numérique (ou plan de film) dans sa taille réelle. Si vous trouvez que les limites de votre ...

Conseils pour prendre bon point et déclenchez Photographies - mannequins

Conseils pour prendre bon point et déclenchez Photographies - mannequins

La photographie est sur la capture et la conservation images, et en tant que photographe, vous voulez prendre les meilleures photos que vous pouvez. Si vous utilisez un appareil photo compact, utilisez ces astuces simples pour améliorer vos photos: Verrouillez toujours la mise au point avant de prendre une photo. Cadre, ne viser pas. Utilisez le viseur ou sur l'écran tout affichage pour composer ...

Le trépied droit pour la photographie en macro et en gros plan - les nuls

Le trépied droit pour la photographie en macro et en gros plan - les nuls

Pour photographier certains sujets de près et en essayant d'atteindre certains résultats, le trépied que vous utilisez peut déterminer si vous réussissez ou échouez. Savoir ce qui est disponible sur le marché et les différences entre les trépieds peut être très utile et vous aide à décider quels trépieds vous conviennent le mieux. Lors de la sélection d'un trépied, accordez une attention particulière à ...

Le choix des éditeurs

Comment entendre la voix de Dieu pendant la prière chrétienne - par tys

Comment entendre la voix de Dieu pendant la prière chrétienne - par tys

La prière chrétienne est une façon de parler à Dieu. Cependant, pour tirer pleinement parti de la prière chrétienne, vous ne pouvez pas simplement parler, vous devez aussi vous préparer à écouter. Les conseils suivants peuvent vous aider à entendre ce que Dieu vous dit: Obtenez le scoop sur ce que Dieu vous dira par ...

Comparant les croyances à travers l'église chrétienne - les mannequins

Comparant les croyances à travers l'église chrétienne - les mannequins

Différentes confessions chrétiennes sont organisées et adorent de différentes façons. Cette liste pratique vous aidera à suivre et à comparer certaines différences dans le culte, les rituels et les croyances des plus grands groupes de l'Église chrétienne. Moyens de salut anglicans / épiscopaux: la grâce de Dieu par la foi seule. Comment ils adorent: le style traditionnel par la liturgie; liturgie contemporaine ...

Conversation avec Dieu - mannequins

Conversation avec Dieu - mannequins

La prière consiste simplement à communiquer avec Dieu. Il n'y a rien de magique à propos de la prière chrétienne; c'est une question de fait. Cependant, la prière chrétienne est plus que simplement dire à Dieu votre liste de demandes et s'attendre à ce qu'il réponde à vos prières comme s'il était un distributeur automatique cosmique. Oui, la prière est un moyen de partager avec Dieu ...

Le choix des éditeurs

Loi visant à accroître Uplifting émotions - mannequins

Loi visant à accroître Uplifting émotions - mannequins

Afin d'élever vos émotions, la première étape est de prendre conscience de ce qui émotions que vous avez. Prenez conscience de ce qui vous déclenche - ce qui vous met en colère et vous met en colère et ce qui vous rend très excité. Un déclencheur surveille certaines émissions de télévision et permet aux émotions de ces programmes de s'infiltrer ...

Comment les entreprises vous convainquent d'acheter leurs produits - mannequins

Comment les entreprises vous convainquent d'acheter leurs produits - mannequins

Presque tous les médias commerciaux destinés aux femmes reçoivent leur publicité les revenus des secteurs de l'alimentation, de la beauté, de l'alimentation et de la mode. Juste l'industrie de régime elle-même est une entreprise commerciale de 33 milliards de dollars par an. Et, bien sûr, ces industries ont continuellement besoin de clients pour continuer à réussir. C'est dans leur meilleur intérêt de ...

Comment l'image corporelle se forme dans votre jeunesse - les nuls

Comment l'image corporelle se forme dans votre jeunesse - les nuls

En général, ce que vous avez vécu avec votre famille grandissaient ont eu un effet direct sur les pensées et les sentiments que vous aviez à propos de votre corps. Repensez à vos jeunes années. Dans quelle mesure les énoncés suivants décrivent votre famille? Personne n'a exercé. La voiture était utilisée même pour de courts trajets. De la nourriture lourde et engraissante ...