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 2024

Vidéo: Tutoriel C++ - énumérations fortement typées 2024
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

Création de graphiques avec Fireworks CS5 Outils vectoriels - dummies

Création de graphiques avec Fireworks CS5 Outils vectoriels - dummies

Les outils Vector dans Adobe Fireworks Creative Suite 5 sont similaires à celles auxquelles vous êtes habitué dans Illustrator ou Photoshop. Vous devriez remarquer dès le départ dans Fireworks qu'à chaque fois que vous créez une nouvelle forme vectorielle avec l'un des outils vectoriels (comme Line, Pen, Shape ou Type), Fireworks crée ...

Comment exporter des tranches dans Fireworks CS5 - les nuls

Comment exporter des tranches dans Fireworks CS5 - les nuls

Découpage est une technique permettant de fractionner des fichiers volumineux en paquets plus petits ils téléchargent plus vite. Une fois que vous avez découpé votre illustration dans Adobe Fireworks Creative Suite 5, vous pouvez exporter les coupes finales pour les utiliser sur une page Web. Vous pouvez exporter des tranches Fireworks sous forme de tableaux html ou de feuilles de style en cascade (CSS). Pour exporter en tranches ...

Comment créer des images avec des outils Bitmap dans Adobe Fireworks CS6 - des mannequins

Comment créer des images avec des outils Bitmap dans Adobe Fireworks CS6 - des mannequins

Adobe Photoshop CS6 a certains outils qui fonctionnent différemment des outils similaires dans d'autres applications Adobe: les outils bitmap de Flou, Pinceau, Gomme, Lasso, Baguette magique, Marquee, Crayon et Rubber Stamp. Si vous ne voyez pas le panneau Outils, choisissez Fenêtre → Outils. Comment sélectionner des pixels avec des outils bitmap Les outils de sélection vous permettent de saisir ...

Le choix des éditeurs

ISO et Image Noise avec le Nikon D3300 - mannequins

ISO et Image Noise avec le Nikon D3300 - mannequins

Idéalement, vous devez toujours utiliser le réglage ISO le plus bas sur votre Nikon D3300 pour assurer une qualité d'image optimale. À mesure que l'ISO augmente, rendant le capteur d'image plus réactif à la lumière, vous augmentez le risque de produire du bruit. Le bruit est un défaut qui ressemble à des grains de sable et ressemble ...

Comment afficher les paramètres d'image sur le Nikon D3300 - dummies

Comment afficher les paramètres d'image sur le Nikon D3300 - dummies

Votre appareil photo Nikon D3300 conserve une trace de paramètres de prise de vue et vous permet de les voir pendant la prise de vue. Votre appareil photo vous propose les moyens suivants pour surveiller les paramètres de prise de vue les plus importants: Écran d'information (photographie du viseur): L'écran de gauche de la figure vous donne un aperçu de l'écran d'informations disponible pour la photographie du viseur. ...

Le choix des éditeurs

Où placer un numéro de page dans Word 2007 - mot de passe

Où placer un numéro de page dans Word 2007 - mot de passe

Mot 2007 peut numéroter automatiquement vos pages et vous permet de placer le numéro de page n'importe où sur la page (en haut, en bas ou sur les côtés) dans une variété de formats. Si vous supprimez ou renumérotez une page, Word les renumérote automatiquement pour vous.

En mode plein écran dans Word pour Mac 2011 - pour les nuls

En mode plein écran dans Word pour Mac 2011 - pour les nuls

, Il existe une nouvelle vue Plein écran dans Word pour Mac 2011 qui vous permet de modifier ou simplement de lire un document sans l'encombrement du ruban Office 2011 pour Mac, des règles et autres distractions. La vue Plein écran est en fait deux vues en une: Vous pouvez choisir le mode Lecture ou le mode Ecriture. Passage en plein écran ...

À L'aide de l'option Imprimer la mise en page dans Word pour Mac 2011 - dummies

À L'aide de l'option Imprimer la mise en page dans Word pour Mac 2011 - dummies

Mac est un bon point de départ pour les débutants car ce que vous voyez à l'écran est le plus proche de ce que vous obtenez lorsque vous imprimez. La vue Imprimer la mise en page est également utile à titre d'exemple pour expliquer la disposition générale de l'interface de Word. Les vues Brouillon et Contour dans ...