Hem Personliga finanser Skapa dina egna UDL i C ++ - dummies

Skapa dina egna UDL i C ++ - dummies

Innehållsförteckning:

Video: Quickdraw Contours - Skapa dina egna HD-kartor (Svenska) 2024

Video: Quickdraw Contours - Skapa dina egna HD-kartor (Svenska) 2024
Anonim

Standardbiblioteket, tillsammans med de inbyggda funktionerna av C ++, ge dig ett intressant utbud av bokstäver. Men det sanna värdet av bokstäver blir uppenbart när du skapar ditt eget.

Det finns många olika behov du kan hantera med användardefinierade bokstäver (UDL), men tre vanliga behov stöder datakonvertering, vilket gör anpassade typer lättare att arbeta med och att erhålla önskade biverkningar utan det vanliga antalet kodproblem.

Även om inbyggda eller standardbibliotekets bokstäver finns i både prefix och suffixform, kan du bara skapa suffixformen när du definierar dina egna bokstäver. Dessutom måste suffixet börja med ett understreck. Undersignalen tjänar till att förhindra konflikter med befintliga suffixer och för att se till att andra utvecklare vet att bokstavligt är en anpassad (nonstandard) form.

Utveckla en omvandling UDL

Det är möjligt att inkapsla konverteringar inom en UDL. Allt du behöver göra när du skapar en sådan UDL är det lämpliga suffixet när du definierar konstanten för att få det resultat du vill ha. CustomUDL01-exemplet visar en teknik för att definiera en konvertering som ändrar radieinmatningen till området för en cirkel i konstanten.

#include using namespace std; constexpr lång dubbeloperatör "_circ (lång dubbelradien) {returradie * radie * 3. 141592;} int huvud () {dubbel x = 5. 0_circ; cout <<" cirkelns område är: "<< x << endl; return 0;}

För att skapa UDL, bygger exemplet på en constexpr med ett returvärde av ett långt dubbel och ett ingångsvärde, radie med en lång dubbel. Ekvationen för att beräkna området av en cirkel är πr 2 . Som du kan se utför exemplet rätt beräkning som en del av konstexpr.

När du skapar en anpassad UDL, kompilatorn tvingar dig att använda den största typen för omvandlingen. Det betyder att du måste använda en lång dubbel för flytande punkt bokstäver och unsigned long long for integer literals. Även om du senare väljer att använda en mindre typ, som görs i detta Exempel genom att förklara x som en dubbel måste den bokstavliga själva använda den största möjliga typen.

För att deklarera en UDL av den nya typen skapar exemplet x, som använder _circ-suffixet. Det matar sedan ut s resultatet på skärmen. När du kör det här exemplet ser du att rätt värde har placerats i x, som visas här:

Området är: 78. 5398

Utveckla en anpassad typ UDL

Mycket av koden du möte bygger på anpassade typer som är svåra att följa och förstå.Att skapa en UDL för att förenkla koden gör sakerna tydligare och minskar risken för fel. CustomUDL02-exemplet visar en anpassad typ, operatören brukade skapa UDL, liksom hur UDL används för att definiera en bokstavlig.

#include using namespace std; struct MyType {MyType (dubbelinmatning): Value (Input) {} dubbelvärde;}; MyType-operatör "_mytype (lång dubbelvärde) {returnera MyType (Value);} int main () {auto UDLType = 145. 6_mytype; cout << uDLType. Värde << endl; return 0;}

För att detta tekniken för att arbeta måste du skapa en konstruktor för din typ som accepterar antalet ingångar som krävs för att konfigurera typen. Vidare måste konstruktören acceptera en typ eller det ingångsvärde som användaren ger är förlorad.

Den anpassade typen behöver stöder inte samma datatyp av samma storlek som operatören behöver, men de måste vara av samma slag. Du kan till exempel inte överföra en lång dubbel till en int.

När du kör det här exemplet ser du en utgång värdet 145. 6, vilket är det värde du anger för den anpassade typen. Det är möjligt att hantera ganska komplexa inställningar med hjälp av detta tillvägagångssätt. Användaren av din anpassade typ får möjlighet att skapa tydlig kod som är lätt att följa och tolka, även när De underliggande typerna är komplexa.

Använda en anpassad UDL för biverkningar

En av de mest intressanta ses för UDLs är att skapa biverkningar (en annan operation än den vanliga eller normala driften, antingen för att göra ansökan kortare och effektivare eller för att ge ökad flexibilitet). Du vill definiera en viss typ av operation som sker som en följd av att du definierar det bokstavliga.

Vad du får är fortfarande en bokstavlig, men en bokstav som inte nödvändigtvis anger ett värde som du planerar att använda senare. Exempelet CustomUDL03 visar en sådan icke-traditionell användning.

#include using namespace std; tomt operatör "_countdown (unsigned long long Value) {för (int i = Värde; i> = 0; i--) cout << i << endl;} int main () {10_countdown; return 0;}

Observera att operatoren _countdown inte är kopplad till någonting som du normalt skulle associera med ett värde. Det returnerar faktiskt inte ett värde alls. Vad du får istället är en bieffekt. När du kör det här exemplet se den här utmatningen.

10 9 8 7 6 5 4 3 2 1 0

Vad som hänt är att kompilatorn har ersatt 10_countdown med individuella cout-satser, en för varje iteration av slingan. Vad du äntligen slutar med är 11 cout-utlåtanden som matar ut värdena mellan 10 och 0 (i omvänd ordning). Bivirkningen UDL öppnar alla möjliga intressanta möjligheter att skapa kod som förenklar vissa upprepade uppgifter på ett sätt som gör användningen uppenbar.

Skapa dina egna UDL i C ++ - dummies

Redaktörens val

Hitta hur du betalar webbplatser i online dating - dummies

Hitta hur du betalar webbplatser i online dating - dummies

Du får vad du betalar för I livet ingår Internet-dating webbplatser. Till skillnad från gratis webbplatser, med lönesidor har du inte huvudvärk på oändliga reklammeddelanden som skriker i ditt ansikte. Dessutom är omfattningen av täckning och tillgängliga funktioner bred och robust. Solid tillsyn tillhandahålls (för att gräva ut wackos) och lämpliga hinder ...

Dating för Dummies Cheat Sheet - dummies

Dating för Dummies Cheat Sheet - dummies

Dating behöver inte vara nervös, men det kräver förberedelse . Du måste göra en uppriktig själsökning så att du är redo att vara ärlig, öppen och uppmärksam. Du behöver en stark känsla för dina dejtingförväntningar så att du tydligt kan kommunicera vad du letar efter utan att ställa in baren så hög att ingen ...

Få passar för dating igen efter 50 - dummies

Få passar för dating igen efter 50 - dummies

Copyright © 2014 AARP All rights reserved. Du behöver inte vara frisk och frisk efter 50, men det hjälper säkert om du är. Om du inte är något av dessa saker, behöver du inte ge upp och tycker att det är för sent att komma dit. Många börjar träningsregler så sent som ålder ...

Redaktörens val

ÄR ett au pair rätt för din familj? - dummies

ÄR ett au pair rätt för din familj? - dummies

Det är viktigt att undersöka dina specifika familjeförhållanden för att avgöra om ett au pair är rätt barnomsorg för din familj. Du kanske bestämmer dig för att anställa ett au pair i stället för daghem, barnbarn eller barnpassare om du vill utsätta din familj för en ny kultur. Är ...

Online-verktyg för familjebudgetar - dummies

Online-verktyg för familjebudgetar - dummies

Vissa familjer kan tycka att den mest användbara aspekten av att bo i en värld med nästan oändliga onlineverktyg innebär att kunna budgetera för familjen med dessa verktyg. Följande tre onlinetjänster erbjuder familjer ett sätt att organisera familjeutgifter online, dela åtkomst till säkra konton och eliminera några av papperet ...

Barn som Online Entreprenörer - Dummies

Barn som Online Entreprenörer - Dummies

Levande i en digital värld tillåter barnen obegränsade möjligheter när det gäller entreprenörskap. Denna digitala tidsålder ger barnen en unik färdighetssats med möjlighet att dela den färdigheten med andra och lägga till "onlineföretagare" till listan över möjliga efterskolor och sommarjobb som finns tillgängliga för barn idag. Spelskapande Ett område där digitalt ...

Redaktörens val

Word 2007 Mail Merge - Steg 3: Byggnadsrekord - dummies

Word 2007 Mail Merge - Steg 3: Byggnadsrekord - dummies

Efter att ha definierat de fält du behöver för din Word 2007-postfusion, är nästa steg att slutföra adresslistan. För att göra det skapar du en lista över poster genom att ange data för varje fält i varje post. Detta händer i dialogrutan Ny adresslista. Kom ihåg att fält är kolumner och ...

Word 2007 Mail Merge - Steg 5: Final Merge - dummies

Word 2007 Mail Merge - Steg 5: Final Merge - dummies

Med sammanfogningsfälten infogad i huvudversionen av Word 2007-dokumentet och adresslistan stannar, är du redo att starta din mailfusion! Spara huvuddokumentet. Klicka på knappen Förhandsgranska resultat. Fälten i huvuddokumentet försvinner! De ersätts av information från den första posten i adresslistan. Så här ...