Acasă Finanțe personale Crearea UDL-urilor proprii în C ++ - dummies

Crearea UDL-urilor proprii în C ++ - dummies

Cuprins:

Video: 8 Modul 3 Crearea propriilor sabloane 2024

Video: 8 Modul 3 Crearea propriilor sabloane 2024
Anonim

Biblioteca standard, împreună cu funcțiile încorporate din C ++, vă oferă o gamă interesantă de literali. Cu toate acestea, adevărata valoare a literalurilor devine mai evidentă atunci când creați-vă propriile.

Există numeroase nevoi diferite pe care le puteți adresa utilizând literali definite de utilizator (UDL), dar trei necesități comune sunt suportul conversiilor de date, facilitarea lucrului cu tipurile personalizate și obținerea efectelor secundare dorite fără numărul obișnuit de probleme de codare.

Deși literalurile bibliotecilor standard sau bibliotecilor standard se găsesc atât în ​​formă prefixă cât și în sufix, puteți crea doar forma sufixului când definiți propriile literali. În plus, sufixul trebuie să înceapă cu un subliniere. Sublinierea servește pentru a preveni conflictele cu sufixele existente și pentru a se asigura că alți dezvoltatori știu că literalul este o formă personalizată (nonstandard).

Dezvoltarea unei conversii UDL

Este posibilă încapsularea conversiilor într-un UDL. Tot ce trebuie să faceți după crearea unei astfel de UDL este să furnizați sufixul corespunzător când definiți constanta pentru a obține rezultatul dorit. Exemplul CustomUDL01 demonstrează o tehnică pentru definirea unei conversii care modifică intrarea razei în zona unui cerc în constanță.

# include utilizarea namespace std; contexpr lung operator dublu "_circ (raza lunga dubla) {raza de retur * raza * 3 141592;} int main () {double x = 5. 0_circ; cout <<" zona cercului este: "<< x << endl; return 0;}

Pentru a crea UDL, exemplul se bazeaza pe un constexpr cu o valoare de returnare a unei lungi duble si a unei valori de intrare, raza, a unui dublu lung.Ecuatia pentru calculul ariei cercului 2

După cum puteți vedea, exemplul realizează calculul corect ca parte a contextualizării

vă obligă să utilizați cel mai mare tip de conversie.Acest lucru înseamnă că trebuie să utilizați un dublu lung pentru literele cu virgulă mobilă și lungimea nesemnată lungă pentru literali întregi Chiar dacă mai târziu alegeți să utilizați un tip mai mic, de exemplu prin declararea lui x drept dublu, literalul însăși trebuie să utilizeze cel mai mare tip posibil

Pentru a declara un UDL de tip nou, exemplul creează x, care utilizează sufixul _circ. rezultatul pe ecran. Când executați acest exemplu, veți vedea că valoarea corectă a fost plasată în x, după cum se arată aici:

Aria cercului este: 78. 5398

Dezvoltarea unui tip personalizat UDL

O mulțime de cod întâlnirea se bazează pe tipuri personalizate care sunt greu de urmărit și de înțeles.Crearea unui UDL pentru a simplifica codul face lucrurile mai clare și reduce potențialul de eroare. Exemplul CustomUDL02 arată un tip personalizat, operatorul folosit pentru a crea UDL, precum și modul în care UDL este utilizat pentru a defini literal.

# include utilizarea namespace std; struct MyType {MyType (intrare dublă): Value (Input) {} valoare dublă;}; MyType operator "_mytype (valoare dublă lungă) {retur MyType (Value);} int main () {auto UDLType = 145. 6_mytype; cout << uDLType Valoare << endl; return 0; pentru a lucra, trebuie să creați un constructor pentru tipul dvs. care acceptă numărul de intrări necesare pentru configurarea tipului.Prin minim, constructorul trebuie să accepte un tip sau valoarea de intrare pe care utilizatorul o oferă este pierdută. nu suportă același tip de date de dimensiune conform cerințelor operatorului, dar ele trebuie să fie de același tip.De exemplu, nu ați putut trece un dublu lung la un int.

Când executați acest exemplu, vedeți o ieșire valoare de 145. 6, care este valoarea pe care o introduceți pentru tipul personalizat.Este posibil să se ocupe de configurații destul de complexe folosind această abordare.Utilizatorul de tip personalizat obține capacitatea de a crea un cod clar care este ușor de urmărit și interpretat, tipurile subiacente sunt complexe.

Utilizarea unui UDL personalizat pentru efecte secundare

Unul dintre cele mai interesante pentru UDL-uri este crearea de

efecte secundare (o operațiune diferită de operarea obișnuită sau normală, fie pentru a face aplicația mai scurtă și mai eficientă, fie pentru a oferi o flexibilitate suplimentară). Vrei să definiți un anumit tip de operație care are loc ca urmare a definirii literalului. Ceea ce obțineți este încă un literal, dar un literal care nu înseamnă neapărat o valoare pe care intenționați să o utilizați mai târziu. Exemplul CustomUDL03 arată o astfel de utilizare netradițională.

# include utilizarea namespace std; void operator "_countdown (valoare lungă nesemnată lungă) {for (int i = value; i> = 0; i--) cout << i << endl; Observați că operatorul _countdown nu este atașat la ceva pe care l-ați asocia în mod normal cu o valoare.De fapt, acesta nu întoarce o valoare deloc.Acest lucru este, în schimb, un efect secundar.Atunci când executați acest exemplu, a se vedea această ieșire

10 9 8 7 6 5 4 3 2 1 0

Ce sa întâmplat este că compilatorul a înlocuit 10_countdown cu instrucțiuni cout individuale, câte unul pentru fiecare iterație a buclă. 11 declarații de tip cout care trimit valori între 10 și 0 (în ordine inversă) Efectul secundar UDL deschide tot felul de posibilități interesante pentru crearea unui cod care simplifică anumite sarcini repetitive într-o manieră care face ca utilizarea lor să devină evidentă

Crearea UDL-urilor proprii în C ++ - dummies

Alegerea editorilor

Social Media Design: Twitter Opțiuni imagine - dummy

Social Media Design: Twitter Opțiuni imagine - dummy

Jonglați constrângerile legate de spațiu și modul cel mai bun de a poziționa cele trei imagini separate pe care vi se permite să le utilizați în profilul dvs. Twitter.

Social Media Design: Inspirând exemplele de afaceri pe Facebook - manechine

Social Media Design: Inspirând exemplele de afaceri pe Facebook - manechine

ÎNainte de scufundări în elementele de bază ale proiectării o pagină solidă Facebook, aruncați o privire asupra unor branduri care profită din plin de Facebook cu pagini proprii. Persoanele fizice și organizațiile de la bloggeri la proprietarii de magazine Etsy de la domiciliu la branduri internaționale folosesc Facebook pentru a se conecta cu clienții și fanii existenți, precum și cu potențialul lor ...

Social Media Optimization: Publicarea Tweets automat la profilul dvs. Facebook - dummies

Social Media Optimization: Publicarea Tweets automat la profilul dvs. Facebook - dummies

Lucrurile noi pe care să le postați pe Facebook pot fi o adevărată corvoadă. Din fericire, există un truc pe care îl puteți optimiza pe acest site media social. Dacă puteți atinge postarea încrucișată a conținutului între servicii, vă puteți salva ceva timp. Twitter vă oferă posibilitatea de a vă conecta profilul cu alte servicii. Există, ...

Alegerea editorilor

Cum se verifică performanța sistemului cu AWS - dummies

Cum se verifică performanța sistemului cu AWS - dummies

AWS (Amazon Web Services) metode pentru monitorizarea serviciilor specifice AWS. Cu toate acestea, este posibil să aveți probleme de performanță a sistemului sau probleme de aplicare non-AWS care trebuie abordate, ceea ce înseamnă că aveți instrumente care pot funcționa în afara AWS. Pachetul de grupuri de instrumente de performanță conține un număr de instrumente specifice pentru realizarea acestei sarcini ...

Cum să alegeți serviciile AWS de care aveți nevoie - dummies

Cum să alegeți serviciile AWS de care aveți nevoie - dummies

Amintiți-vă că aveți doar 12 luni de libertate proces în care să se ia decizii privind serviciile AWS (Servicii Amazon Web) pe care să le utilizați în afacerea dvs. Douăsprezece luni pot părea mult timp, dar veți descoperi că se evaporă înaintea ochilor dvs. în timp ce încercați să vă jonglați responsabilitățile zilnice, întâlnirile ...

Probleme de securitate aWS - dummy

Probleme de securitate aWS - dummy

Pentru a utiliza AWS (Amazon Web Services) cale. Administratorii și profesioniștii în domeniul securității se pot răzbuna rapid, încercând să păstreze aceste computere interconectate în siguranță, dar aceasta face parte din descrierea postului. Trebuie să urmați cele mai bune practici în securizarea sistemelor informatice, a datelor pe care le conțin, ...

Alegerea editorilor

Cum se asamblează o Circuit de organe color - dummies

Cum se asamblează o Circuit de organe color - dummies

După ce ați strâns toate materialele de care aveți nevoie construiți un organ de culoare, sunteți gata să asamblați proiectul. Vedeți ce aveți nevoie pentru a construi un circuit de organe color. Veți avea nevoie de următoarele instrumente: Sârma de lipit, de preferință cu setări de 20 și 40 W Solder Utilizați lipire mai groasă pentru firele de tensiune și subțire ...

Construirea unui Circuit Dead-Bug Style - dummies

Construirea unui Circuit Dead-Bug Style - dummies

) Sunt montate cu capul în jos pe placa de circuit imprimat (PC), majoritatea picioarelor lipindu-se în aer! Arata ca multe. . . morți bug-uri! Un alt nume pentru acest tip de construcție este "circuitele de aer", deoarece componentele sunt atașate direct la ...

Aplicarea RFID în lumea reală - dummies

Aplicarea RFID în lumea reală - dummies

Capacitatea de a urmări și de a urmări, de a urmări și de a găsi, peek sunt toate îmbunătățite prin utilizarea RFID. Unii avocați de confidențialitate vă faceți griji că aparatele vor atașa în mod magic etichetele RFID la îmbrăcăminte sau pantofi pe măsură ce vă plimbați prin magazin sau în jurul unui birou, dar acest lucru este foarte puțin probabil. Limitele ...