Hjem Personlig finansiering Lage dine egne UDLer i C ++ - dummies

Lage dine egne UDLer i C ++ - dummies

Innholdsfortegnelse:

Video: Lær å lage dine egne seigmenn 2024

Video: Lær å lage dine egne seigmenn 2024
Anonim

Standardbiblioteket, kombinert med de innebygde funksjonene av C ++, gi deg et interessant utvalg av bokstaver. Men den sanne verdien av bokstavene blir tydeligere når du lager din egen.

Det er mange forskjellige behov du kan adressere ved hjelp av brukerdefinerte bokstaver (UDLer), men tre vanlige behov støtter datakonverteringer, noe som gjør tilpassede typer lettere å jobbe med, og å skaffe ønskede bivirkninger uten det vanlige antallet kodingsproblemer.

Selv om innebygde eller Standardbibliotekets bokstaver kommer i både prefikset og suffiksform, kan du bare lage suffiksformularen når du definerer dine egne bokstaver. I tillegg må suffikset begynne med en understreking. Underskriften tjener til å forhindre konflikter med eksisterende suffikser og for å sikre at andre utviklere vet at bokstavene er en tilpasset (ikke-standardisert) form.

Utvikle en konvertering UDL

Det er mulig å inkapslere konverteringer i en UDL. Alt du trenger å gjøre når du oppretter en slik UDL, er å gi riktig suffiks når du definerer konstanten for å oppnå ønsket resultat. CustomUDL01-eksemplet demonstrerer en teknikk for å definere en konvertering som endrer radiusinngangen til området av en sirkel i konstanten.

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

For å lage UDL, bygger eksempelet på en constexpr med en returverdi av en lang dobbel og en inngangsverdi, radius med en lang dobbel. Ekvationen for å beregne området av en sirkel er πr 2 . Som du kan se, utfører eksemplet den korrekte beregningen som en del av constexpr.

Når du oppretter en tilpasset UDL, er kompilatoren tvinger deg til å bruke den største typen for konvertering. Dette betyr at du må bruke en lang dobbel for flytende poeng bokstaver og usignert lenge etter heltal bokstaver. Selv om du senere velger å bruke en mindre type, som det er gjort i dette Eksempel ved å erklære x som en dobbel, den bokstavlige selv må bruke størst mulig type.

For å erklære en UDL av den nye typen, oppretter eksemplet x, som bruker _circ-suffikset. s resultatet på skjermen. Når du kjører dette eksempelet, ser du at den riktige verdien er plassert i x, som vist her:

Sirkelområdet er: 78. 5398

Utvikle en tilpasset type UDL

Mye av koden du møtet er avhengig av tilpassede typer som er vanskelige å følge og forstå.Å lage en UDL for å forenkle koden gjør ting klarere og reduserer potensialet for feil. Eksempelet CustomUDL02 viser en egendefinert type, operatøren brukte til å lage UDL, samt hvordan UDL brukes til å definere en bokstavelig.

#include bruk av navneområde std; struct MyType {MyType (double Input): Verdi (Input) {} doble verdi;}; MyType operator "_mytype (lang dobbel verdi) {return MyType (Value);} int main () {auto UDLType = 145. 6_mytype; cout << uDLType. Verdi << endl; return 0;}

For dette teknikk for å jobbe, må du opprette en konstruktør for din type som aksepterer antall innganger som kreves for å konfigurere typen. I det minste må konstruktøren godta en type, eller den inngangsverdi brukeren gir, går tapt.

Tilpasset typebehov ikke støtte den samme datatypen som kreves av operatøren, men de må være av samme type. Du kan for eksempel ikke overføre en lang dobbel til en int.

Når du kjører dette eksempelet, ser du en utgang verdien av 145. 6, som er verdien du legger inn til den egendefinerte typen. Det er mulig å håndtere forholdsvis komplekse oppsett ved hjelp av denne tilnærmingen. Brukeren av din egendefinerte type får muligheten til å opprette klar kode som er lett å følge og tolke, selv når De underliggende typene er komplekse.

Bruke en tilpasset UDL for bivirkninger

En av de mest interessante u ses for UDLs er å skape bivirkninger (en annen operasjon enn vanlig eller normal drift, enten for å gjøre programmet kortere og mer effektivt eller for å gi ekstra fleksibilitet). Du vil definere en bestemt type operasjon som finner sted som et resultat av å definere den bokstavelige.

Det du får er fortsatt en bokstavelig, men en bokstavelig som ikke nødvendigvis betyr en verdi som du planlegger å bruke senere. CustomUDL03-eksemplet viser en slik ikke-tradisjonell bruk.

#include bruk av navneområde std; void operator "_countdown (usignert lang lang verdi) {for (int i = verdi; i> = 0; i--) cout << jeg << endl;} int main () {10_countdown; return 0;}

Legg merke til at _countdown-operatøren ikke er knyttet til noe som du vanligvis vil knytte til en verdi. Faktisk returnerer det ikke en verdi i det hele tatt. Det du får i stedet er en bivirkning. se denne utgangen.

10 9 8 7 6 5 4 3 2 1 0

Det som har skjedd, er at kompilatoren har erstattet 10_countdown med individuelle cout-setninger, en for hver iterasjon av løkken. Det du ender med er 11 cout-setninger som gir verdiene mellom 10 og 0 (i omvendt rekkefølge). Bivirkningen UDL åpner for alle mulige interessante muligheter for å lage kode som forenkler bestemte gjentatte oppgaver på en måte som gjør deres bruk tydelig.

Lage dine egne UDLer i C ++ - dummies

Redaktørens valg

Vanlige medikamenteffekter for legeassistenteksamen - dummies

Vanlige medikamenteffekter for legeassistenteksamen - dummies

Bli kjent med vanlige bivirkninger for legeassistenteksamen (PANCE). Den gjennomsnittlige personen over 60 år tar omtrent ni reseptbelagte medisiner og ser minst fire forskjellige helsepersonell. Potensialet for noen til å oppleve bivirkningene av disse medisinene er enorm, og det er potensialet for signifikante legemiddelinteraksjoner. ...

Epidemiologiske studier dekket av legeassistenteksamen - dummies

Epidemiologiske studier dekket av legeassistenteksamen - dummies

For legeassistenteksamen (PANCE) du bør være oppmerksom på forskjellene mellom typer epidemiologiske studier. Det første trinnet er å gjenkjenne om studiet er en retrospektiv studie eller en prospektiv studie: Retrospektiv: En retrospektiv studie betyr at du ser på fortiden for å finne ut hva som skjedde. For eksempel, en ...

Forhold som påvirker pleura dekket på legeassistenteksamen - dummies

Forhold som påvirker pleura dekket på legeassistenteksamen - dummies

Du kan se Spørsmål om legeassistenteksamen om forhold som påvirker pleura. Du må vurdere evaluering og behandling av pleural effusions, pneumothorax og pleurisy. Væske rundt lungene: Pleural effusjon Normalt er pleura et tomt rom; en pleural effusjon er ganske enkelt væske som opptar den plassen. Pleural ...

Redaktørens valg

Slik setter du automatiske varsler på LinkedIn - dummies

Slik setter du automatiske varsler på LinkedIn - dummies

Sikkert, du kan gjøre alt fotverket ved å gå til LinkedIn hjemmesiden og ser deg rundt for å se hvilke meldinger eller endringer som har skjedd. Den sanne kraften til å holde kontakten, har imidlertid LinkedIn, kontakter deg automatisk med den informasjonen du trenger for å holde deg informert. Klikk på Administrer-koblingen ved siden av Personvern og innstillinger ...

Tips for å administrere dine LinkedIn Post-interaksjoner - dummies

Tips for å administrere dine LinkedIn Post-interaksjoner - dummies

Når du klikker Publiser på LinkedIn, kan du tenke at jobb er ferdig, men det er bare begynt. Etter hvert som flere og flere leser innlegget ditt, kan de samhandle med innlegget og med deg som forfatter. Her er noen ting å huske på etter at du har publisert et innlegg: Overvåk statistikken. Når du ...

Forstå LinkedIn Pulse - dummies

Forstå LinkedIn Pulse - dummies

Har du sjekket ut LinkedIn Pulse ennå? Tenk deg om du leser en avis som bare viste deg artikler som har betydning for deg. (For det hele, for mange av dere, tenk på de dagene du kanskje har lest en avis.) Tilpassede nyheter er mulige, og på LinkedIn kalles det LinkedIn Pulse. Alt du trenger å gjøre for å ...

Redaktørens valg

Hva Dragon NaturallySpeaking kan gjøre for deg - dummies

Hva Dragon NaturallySpeaking kan gjøre for deg - dummies

Noe om å diktere til en datamaskin vekker alle slags urealistiske forventninger hos mennesker. Hvis du forventer at du skal servere deg frokost på sengen, har du lykke til. Denne artikkelen ble ikke skrevet ved å si "Computer, skriv en bok om NaturallySpeaking. "Forfatteren måtte diktere det ord for ord, akkurat som hun ville hatt ...

Når Start ikke starter i NaturallySpeaking - dummies

Når Start ikke starter i NaturallySpeaking - dummies

Når du gir kommandoen "Start" til Dragon NaturallySpeaking, du sier "Start America Online" eller "Start Microsoft Works" eller "Start Quicken", og programmet skal åpnes. Men hva hvis det ikke gjør det? Hva er greia? Start-kommandoen starter et program som er installert på maskinen din, og har enten et snarveisikon på ...

Når NaturallySpeaking Menykommandoer ikke fungerer - dummies

Når NaturallySpeaking Menykommandoer ikke fungerer - dummies

Når du gir en kommando til NaturallySpeaking, for eksempel "Klikk" og ingenting skjer, det sannsynlige problemet er at menyen Bruk menyer som er kompatible med skjermlesere, ikke er merket av. For å sjekke det: Velg Verktøy → Valg i vinduet NaturallySpeaking. Det er ikke noe poeng å fortelle deg hvordan du får tilgang til dette med stemmen, for det er akkurat ...