Hjem Personlig finansiering Opret dine egne UDL'er i C ++ - dummies <[SET:descriptionda]Standardbiblioteket, kombineret med de indbyggede funktioner i C ++,

Opret dine egne UDL'er i C ++ - dummies <[SET:descriptionda]Standardbiblioteket, kombineret med de indbyggede funktioner i C ++,

Indholdsfortegnelse:

Anonim

Standardbiblioteket kombineret med de indbyggede funktioner af C ++, giver dig et interessant udvalg af bogstaver. Men den sande værdi af bogstaver bliver mere indlysende, når du opretter din egen.

Der er mange forskellige behov, du kan adressere ved brug af brugerdefinerede litteraturer (UDL'er), men tre fælles behov understøtter datakonverteringer, der gør brugerdefinerede typer nemmere at arbejde med og opnå ønskede bivirkninger uden det sædvanlige antal kodingsproblemer.

Selvom indbyggede eller Standardbibliotekets bogstaver kommer i både præfiks og suffiksform, kan du kun oprette suffiksformularen, når du definerer dine egne bogstaver. Desuden skal suffikset begynde med en understregning. Underskæringen tjener til at forhindre konflikter med eksisterende suffikser og for at sikre, at andre udviklere ved, at bogstavet er en brugerdefineret (ikke-standardiseret) form.

Udvikling af en konvertering UDL

Det er muligt at indkapslere konverteringer inden for en UDL. Alt du skal gøre, når du opretter en sådan UDL, er det rette suffix, når du definerer konstanten for at opnå det ønskede resultat. CustomUDL01-eksemplet demonstrerer en teknik til at definere en konvertering, der ændrer radiusindgangen til et cirkelområde i konstanten.

#include bruger navneområde std; constexpr lang dobbeltoperatør "_circ (lang dobbelt radius) {returradius * radius * 3. 141592;} int main () {double x = 5. 0_circ; cout <<" cirklens område er: "<< x << endl; return 0;}

For at oprette UDL, afhænger eksemplet på en constexpr med en returværdi af en lang dobbelt og en indgangsværdi, radius af en lang dobbel. Ligningen til beregning af et cirkelområde er πr 2 . Som du kan se, udfører eksemplet den korrekte beregning som en del af constexpr.

Når du opretter en brugerdefineret UDL, skal kompilatoren tvinger dig til at bruge den største type til konverteringen.Det betyder, at du skal bruge en lang dobbelte for floating point-bogstaver og usignerede lange længe efter heltallige bogstaver. Selvom du senere vælger at bruge en mindre type, som det gør i dette Eksempel ved at erklære x som en dobbelt, skal den bogstavlige selv anvende den størst mulige type.

For at erklære en UDL af den nye type, skaber eksemplet x, som bruger _circ-suffixet. Det output derefter s resultatet på skærmen. Når du kører dette eksempel, ser du, at den korrekte værdi er placeret i x som vist her:

Området er: 78. 5398

Udvikling af en brugerdefineret type UDL

Meget af koden du møder er afhængige af brugerdefinerede typer, der er svære at følge og forstå.Oprettelse af en UDL for at forenkle koden gør ting klarere og reducerer muligheden for fejl. Eksempelet CustomUDL02 viser en brugerdefineret type, operatøren brugte til at oprette UDL, samt hvordan UDL bruges til at definere en bogstav.

#include bruger navneområde std; struct MyType {MyType (double Input): Værdi (Input) {} dobbeltværdi;}; MyType operator "_mytype (lang dobbeltværdi) {return MyType (Value);} int main () {auto UDLType = 145. 6_mytype; cout << uDLType. Værdi << endl; return 0;}

For at dette kan teknik til arbejde, skal du oprette en konstruktor til din type, der accepterer antallet af input, der kræves for at konfigurere typen. I det mindste skal konstruktøren acceptere en type, eller den inputværdi, som brugeren giver, går tabt.

Den tilpassede typebehov understøtter ikke den samme datatype som krævet af operatøren, men de skal være af samme type. Du kan f.eks. ikke overføre en lang dobbel til en int.

Når du kører dette eksempel, ser du en output værdi på 145. 6, som er den værdi, du indtaster til den brugerdefinerede type. Det er muligt at håndtere forholdsvis komplekse opsætninger ved hjælp af denne fremgangsmåde. Brugeren af ​​din brugerdefinerede type opnår evnen til at oprette en klar kode, der er let at følge og fortolke, selv når De underliggende typer er komplekse.

Brug af en brugerdefineret UDL til bivirkninger

En af de mest interessante u ses for UDL'er er at skabe bivirkninger (en anden operation end den sædvanlige eller normale operation, enten for at gøre ansøgningen kortere og mere effektiv eller for at give ekstra fleksibilitet). Du vil definere en bestemt form for operation, der finder sted som et resultat af at definere den bogstavelige.

Hvad du får, er stadig en bogstavelig, men en bogstav, der ikke nødvendigvis angiver en værdi, som du planlægger at bruge senere. CustomUDL03-eksemplet viser en sådan ikke-traditionel anvendelse.

#include bruger navneområde std; void operator "_countdown (usigneret lang lang værdi) {for (int i = værdi; i> = 0; i--) cout << jeg << endl;} int main () {10_countdown; return 0;}

Bemærk, at _countdown-operatøren ikke er knyttet til noget, som du normalt forholder dig til en værdi. Faktisk returnerer det ikke en værdi overhovedet. Det, du får i stedet, er en bivirkning. se denne output.

10 9 8 7 6 5 4 3 2 1 0

Hvad der er sket, er, at kompilatoren har erstattet 10_countdown med individuelle cout udsagn, en for hver iteration af sløjfen. Hvad du ender med er 11 cout udsagn, der udsender værdierne mellem 10 og 0 (i omvendt rækkefølge). Bivirkningen UDL åbner alle mulige interessante muligheder for at skabe kode, der forenkler bestemte gentagne opgaver på en måde, der gør deres brug tydelig.

Opret dine egne UDL'er i C ++ - dummies <[SET:descriptionda]Standardbiblioteket, kombineret med de indbyggede funktioner i C ++,

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 ...