Hjem Personlig finansiering Stærkt typede opgørelser i C ++ - dummies

Stærkt typede opgørelser i C ++ - dummies

Video: Fallout 76 Tipps Und Tricks (Deutsch) 10+ Tipps für Einsteiger & Fortgeschrittene [Folge 02] 2025

Video: Fallout 76 Tipps Und Tricks (Deutsch) 10+ Tipps für Einsteiger & Fortgeschrittene [Folge 02] 2025
Anonim

Programmering handler om læsbarhed. Det er svært (faktisk det er umuligt) at skrive og vedligeholde et program, som du ikke kan læse. En del af læsning af en kildekodeoversigt er at forstå, hvad tallene der bruges i programmet repræsenterer. Den mest grundlæggende hjælp, som C ++ giver, er den allestedsnærværende #defin, som i følgende ofte citerede eksempel:

#define PI 3. 141592653589793

Denne løsning er okay for individuelle værdier, selv om det lider af, at #define mekanisme er ikke (strengt taget) en del af C / C ++, da præprocessoren kører før kompilatoren. Som følge heraf introducerede C ++ 2011 en konstant ekspression konstruktion:

constexpr lang dobbelt PI = 3. 141592653589793;

Constexpr-søgeordet bringer konstanter ind i C ++-teltet. Denne PI har en reel type, ligesom andre C ++ variabler. C ++ kan generere fejlmeddelelser med PI, der giver meget mere mening end dem der involverer 3. 14159.

Konstant udtryk er fint for individuelle konstante værdier, men ofte repræsenterer konstanter sæt af ting i stedet for naturlige konstanter som i følgende eksempel:

#define DC_OR_TERRITORY 0 #define ALABAMA 1 #define ALASKA 2 #define ARKANSAS 3 // … og så videre …

Formentlig bruges disse konstanter til at identificere de stater, der måske anvendes som et indeks i en matrix af statlige objekter eller som en værdi i en database et eller andet sted.

C ++ har længe haft en forbedret mekanisme til at definere disse typer af konstanter - opregningen:

enum STATE {DC_OR_TERRITORY, // får 0 ALABAMA, // får 1 ALASKA, // får 2 ARKANSAS, // … og snart…};

Enum-søgeordet introducerer en sekvens af konstanter kaldet en "opregning". I dette tilfælde bærer opregningen navnet STATE. Hvert element i denne opgørelse er tildelt en værdi, der starter ved 0 og øges successivt med 1, så DC_OR_TERRITORY er defineret som 0, ALABAMA er defineret som 1 og så videre. Du kan tilsidesætte denne inkrementelle sekventering ved at bruge en tildelingserklæring som følger:

ENUM STATUS {DC, TERRITORY = 0, ALABAMA, ALASKA, // … og så videre …};

Denne version af STATE definerer et element DC, som er angivet med værdien 0. Det definerer derefter et nyt element TERRITORY, som også tildeles værdien 0. ALABAMA vælger 1, lige som før.

I praksis kan programmereren bruge opgørelser til at skrive helt læsbar kode som følgende:

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

Det eneste problem med denne tilgang er, at denne opregning opretter ikke en ny type (som du måske tror).Faktisk er STATE ifølge standarden bare et andet navn til int - og konstanterne ALABAMA, ALASKA og så videre er alle type const int.

Gcc-kompilatoren giver faktisk en enum deklareret på denne måde lidt mere autoritet end blot at kalde det en anden form for int. Du kan faktisk overbelaste funktioner baseret på en enum type:

void fn (STATE s); void fn (int n); fn (ALASKA); // påberåber fn (STATE)

2011-standarden giver programmereren mulighed for at oprette en helt ny type ved hjælp af enum-søgeordet. Da skaberne af den nye standard ikke ønskede at bryde eksisterende kode, kræver standarden at tilføje et ekstra søgeord for at definere en opregningstype som i følgende eksempel:

enum klasse STATE {DC, TERRITORY = 0, ALABAMA, ALASKA, // … og så videre …};

En opregningsklasse er nu en fuldskala type som enhver anden brugerdefineret klasse. Følgende er ikke engang lovlig af to grunde:

int s = ALASKA;

For det første defineres den konstante ALASKA kun inden for STATE navneområdet. Således er konstantens navn STATE:: ALASKA. For det andet er typen ikke int men STAT. Du kan ikke tildele en værdi af typen STATE til en int.

STATUS s = STAT:: ALASKA;

Programmeren kan omdanne en stat til en int, men hun skal gøre det eksplicit. Foretrukne konverteringer skal ikke skære det med opregningsklasser:

int n = (int) STAT:: ALASKA;

Denne nye enumtype kan også baseres på en af ​​de andre tælleantalstyper udover bare int:

enum klasse STATE: char {DC, // … resten af ​​erklæringen er den samme
Stærkt typede opgørelser i C ++ - dummies

Valg af editor

10 Transaktioner og funktioner, som de fleste oplysninger konverterer til i QuickBooks Online - dummies

10 Transaktioner og funktioner, som de fleste oplysninger konverterer til i QuickBooks Online - dummies

Følgende listen indeholder detaljer om transaktioner og funktioner, som de fleste data konverterer og sammenlignelige transaktioner og funktioner findes i QuickBooks Online (QBO). I nogle tilfælde findes undtagelser; Du finder specifikke noter i web-ekstraartikel & ldquo; Hvordan QuickBooks Desktop Lister Konverter til QuickBooks Online. & Rdquo; Og for flere oplysninger, besøg QuickBooks ofte stillede spørgsmål, og ldquo; Hvorfor ...

Der producerer betalingsopgørelser i MYOB-dummies

Der producerer betalingsopgørelser i MYOB-dummies

I slutningen af ​​hvert lønningsår (som slutter den 30. juni) kan bruge MYOB til at levere hver medarbejder med et betalingsoversigt. Et betalingsopsamling er et kort dokument, der opsummerer de bruttolønninger, skat og godtgørelser, som medarbejderen har modtaget i løbet af de sidste 12 måneder af ansættelsen. Opsætning af betalingsoversigter Til ...

15 Funktioner, der ikke konverteres og findes ikke i QuickBooks Online

15 Funktioner, der ikke konverteres og findes ikke i QuickBooks Online

Følgende oplysninger viser transaktioner og funktioner, som ikke konverteres fra desktop QuickBooks til QuickBooks Online (QBO) og heller ikke har nogen sammenlignelig funktion i QBO. Selv om en eller flere af disse transaktioner eller funktioner kan være afbrudte afbrydere, skal du huske at for mange af disse funktioner kan du bruge løsninger. Typen af ​​data eller funktional noter ...

Valg af editor

Sådan bruger du FREQUENCY-funktionen i Excel - dummier

Sådan bruger du FREQUENCY-funktionen i Excel - dummier

FREQUENCY-funktionen i Excel tæller værdierne i en array der falder inden for en rækkevidde eller bin. Funktionen bruger følgende syntaks: = FREQUENCY (data_array, bins_array) hvor data_array er det regnearkområde, der indeholder de værdier, du vil tælle, og bins_array er et regnearkområde, der identificerer værdierne eller bakkerne, der ...

Hvordan man bruger målsøgningsfunktionen i Excel 2013 - dummies

Hvordan man bruger målsøgningsfunktionen i Excel 2013 - dummies

, Når du skal analysere , bruger du Excel 2013s målsøgningsfunktion til at finde de indgangsværdier, der er nødvendige for at opnå det ønskede mål. Nogle gange, når du gør hvad-hvis analyse, har du et bestemt udgangspunkt i tankerne, såsom et mål salgsmængde eller vækstprocent. Hvis du vil bruge funktionen Målsøgning placeret på What-If ...

Hvordan man vælger Excel CHOOSE-funktionen i datamodeller - dummier

Hvordan man vælger Excel CHOOSE-funktionen i datamodeller - dummier

Selvom valgmuligheden måske ikke Se nyttige på overfladen, denne funktion kan dramatisk forbedre dine Excel-datamodeller. VÆLG-funktionen returnerer en værdi fra en bestemt liste over værdier baseret på et angivet positionsnummer. Hvis du f.eks. Indtaster formlerne VÆLG (3, "Rød", "Gul", "Grøn", "Blå") i en celle, returnerer Excel ...

Valg af editor

Indlæs en Workflow i SharePoint 2010 - dummies

Indlæs en Workflow i SharePoint 2010 - dummies

Konfigurere dit bibliotek til at bruge en workflow i SharePoint 2010 løser kun en del af problemet. Hvis du ikke har dit bibliotek konfigureret til at kick-off automatisk, skal en person manuelt starte workflowen. Start manuelt en arbejdsgang ved at følge disse trin: Gennemse det element, du vil godkende, klik på rullelisten og vælg Workflows. ...

Bibliotek / Liste Generelle indstillinger Område i SharePoint 2010 - dummies

Bibliotek / Liste Generelle indstillinger Område i SharePoint 2010 - dummies

Bibliotekets generelle indstillinger / listen er blevet udvidet i SharePoint 2010 til at omfatte flere nye indstillinger, herunder validering, kolonne standardværdi (for biblioteker), vurdering, metadata navigation, visningsvisning og formular (for lister). Her er et overblik for at se, hvad du kan gøre med hver af disse muligheder. Generelle indstillinger Konfigurationsindstillinger Indstillingsnavn ...

Importer et regneark som en liste i SharePoint 2010 - dummies

Importer et regneark som en liste i SharePoint 2010 - dummies

Har allerede data i et regneark, som du Vil du være en SharePoint 2010 liste? Du er halvvejs derhen! Før du starter, skal du sørge for at gøre følgende: Rens listen. Sørg for, at din liste ligner et bord uden tomme kolonner eller rækker. Sørg for, at din liste har overskrifter. Alle kolonner skal have en ...