Huis Persoonlijke financiën Uw eigen UDL's maken in C ++ - dummies

Uw eigen UDL's maken in C ++ - dummies

Inhoudsopgave:

Video: BEFORE YOU GO TO SCHOOL, WATCH THIS || WHAT IS SCHOOL FOR? 2024

Video: BEFORE YOU GO TO SCHOOL, WATCH THIS || WHAT IS SCHOOL FOR? 2024
Anonim

De standaardbibliotheek, gekoppeld aan de ingebouwde functies van C ++, bieden u een interessante reeks letterlijke tekens. De echte waarde van literals wordt echter duidelijker wanneer u uw eigen maakt.

Er zijn veel verschillende behoeften die u kunt oplossen met behulp van User Defined Literals (UDL's), maar drie gemeenschappelijke behoeften zijn het ondersteunen van gegevensconversies, het eenvoudiger maken van aangepaste typen om mee te werken en het verkrijgen van gewenste bijwerkingen zonder het gebruikelijke aantal coderingsproblemen.

Hoewel letterlijke of standaardbibliotheekliteralen zowel een voorvoegsel als een achtervoegsel bevatten, kunt u alleen het achtervoegselformulier maken bij het definiëren van uw eigen letterlijke waarden. Bovendien moet het achtervoegsel beginnen met een onderstrepingsteken. Het onderstrepingsteken dient om conflicten met bestaande achtervoegsels te voorkomen en om ervoor te zorgen dat andere ontwikkelaars weten dat het letterlijke een aangepaste (niet-standaard) vorm is.

Een conversie UDL ontwikkelen

Het is mogelijk om conversies in te kapselen in een UDL. Alles wat u hoeft te doen nadat u zo'n UDL hebt gemaakt, biedt het juiste achtervoegsel bij het definiëren van de constante om het gewenste resultaat te verkrijgen. Het CustomUDL01-voorbeeld toont een techniek voor het definiëren van een conversie die de straalinvoer verandert in het gebied van een cirkel in de constante.

# include namespace std; constexpr lange dubbele operator "_circ (lange dubbele straal) {retourradius * straal * 3. 141592;} int main () {double x = 5. 0_circ; cout <<" het gebied van de cirkel is: "<< x << endl; return 0;}

Voor het maken van de UDL is het voorbeeld gebaseerd op een constexpr met een retourwaarde van een lange dubbele en een invoerwaarde, radius, van een lange dubbele waarde. De vergelijking voor het berekenen van het gebied van een cirkel is πr 2 . Zoals u kunt zien, voert het voorbeeld de correcte berekening uit als onderdeel van de constexpr.

Telkens wanneer u een aangepaste UDL aanmaakt, zal de compiler dwingt je om het grootste type voor de conversie te gebruiken.wat dit betekent is dat je een lange dubbele voor literalen met een drijvende komma en niet-ondertekende lang moet gebruiken voor integer literals, zelfs als je later kiest om een ​​kleiner type te gebruiken, zoals in deze bijvoorbeeld door x als een dubbel te declareren, moet de letterlijke zelf het grootst mogelijke type gebruiken.

Om een ​​UDL van het nieuwe type te declareren, maakt het voorbeeld x, dat het achtervoegsel _circ gebruikt. s het resultaat op het scherm. Wanneer u dit voorbeeld uitvoert, ziet u dat de juiste waarde in x is geplaatst, zoals hier wordt weergegeven:

Het gebied van de cirkel is: 78. 5398

Een aangepast type UDL

ontwikkelen Veel van de code die u gebruikt ontmoeting is afhankelijk van aangepaste typen die moeilijk te volgen en te begrijpen zijn.Het maken van een UDL om de code te vereenvoudigen, maakt dingen duidelijker en vermindert de kans op fouten. Het CustomUDL02-voorbeeld toont een aangepast type, de operator die werd gebruikt om de UDL te maken, en ook hoe de UDL wordt gebruikt om een ​​letterlijke definitie te geven.

# include namespace std; struct MyType {MyType (dubbele invoer): Waarde (invoer) {} dubbele waarde;}; MyType-operator "_mytype (lange dubbele waarde) {return MyType (Value);} int main () {auto UDLType = 145. 6_mytype; cout << uDLType. Waarde << endl; retourneer 0;}

Om dit te doen techniek om te werken, moet je een constructor voor je type maken die het aantal inputs accepteert dat vereist is om het type te configureren. Minstens, de constructor moet één type accepteren of de invoerwaarde die de gebruiker biedt is verloren.

De aangepaste type behoefte niet hetzelfde gegevenstype van de grootte ondersteunen als vereist door de operator, maar ze moeten van dezelfde soort zijn. U kunt bijvoorbeeld een lange double niet omzetten naar een int.

Wanneer u dit voorbeeld uitvoert, ziet u een uitvoer waarde van 145. 6, de waarde die u hebt ingevoerd voor het aangepaste type Het is mogelijk om met deze aanpak redelijk complexe instellingen te verwerken De gebruiker van uw aangepaste type verkrijgt de mogelijkheid om duidelijke code te maken die gemakkelijk te volgen en te interpreteren is, zelfs wanneer de onderliggende typen zijn complex.

Een aangepaste UDL gebruiken voor bijwerkingen

Een van de interessantste u ses voor UDL's is om bijwerkingen te creëren (een andere operatie dan de gebruikelijke of normale operatie, ofwel om de applicatie korter en efficiënter te maken of om extra flexibiliteit te bieden). U wilt een bepaald soort bewerking definiëren die plaatsvindt als resultaat van het definiëren van het letterlijke.

Wat u krijgt is nog steeds een letterlijke, maar een letterlijke waarde die niet noodzakelijk een waarde aangeeft die u later wilt gebruiken. Het voorbeeld van CustomUDL03 toont een dergelijk niet-traditioneel gebruik.

# include namespace std; void-operator "_countdown (unsigned long long Value) {for (int i = Value; i> = 0; i--) cout << i << endl;} int main () {10_countdown; return 0;}

U ziet dat de operator _countdown niet is gekoppeld aan iets dat u normaal aan een waarde zou koppelen. In feite wordt er helemaal geen waarde geretourneerd. In plaats daarvan krijgt u een bijwerking. zie deze uitvoer.

10 9 8 7 6 5 4 3 2 1 0

Wat er is gebeurd is dat de compiler 10_countdown heeft vervangen door individuele cout-statements, één voor elke iteratie van de lus. Wat je uiteindelijk oplevert is 11 cout-opdrachten die de waarden uitvoeren tussen 10 en 0 (in omgekeerde volgorde) De bijwerking UDL opent allerlei interessante mogelijkheden voor het maken van code die bepaalde repetitieve taken vereenvoudigt op een manier die het gebruik ervan duidelijk maakt.

Uw eigen UDL's maken in C ++ - dummies

Bewerkers keuze

Een Oracle-omgeving instellen - dummies

Een Oracle-omgeving instellen - dummies

Als u een typische PL / SQL-omgeving wilt instellen, hebt u de volgende componenten: Databaseserver: dit is een computer (of een reeks computers) die de Oracle-database uitvoert. Oracle werkt in veel populaire computeromgevingen. De meest gebruikte met Oracle zijn UNIX, Linux of een versie van Microsoft Windows. PL / SQL wordt meestal uitgevoerd ...

SQL-rijwaarden en -waarden - dummies

SQL-rijwaarden en -waarden - dummies

De waarden die worden bewaard in de cellen die de snijpunten van de SQL-database vormen De rijen en kolommen van de tabel zijn de grondstoffen waaruit u zinvolle relaties en trends kunt afleiden. Rijwaarden De meest zichtbare waarden in een database zijn tabelrijwaarden. Dit zijn de waarden die elke rij van een databasetabel ...

SQL eerste, tweede en derde normale vormen - dummies

SQL eerste, tweede en derde normale vormen - dummies

Er zijn drie bronnen van wijzigingsanomalieën in SQL Deze worden gedefinieerd als eerste, tweede en derde normale vormen (1NF, 2NF, 3NF). Deze normale vormen fungeren als remedies voor het wijzigen van anomalieën. Eerste normale vorm Om in de eerste normale vorm (1NF) te zijn, moet een tabel de volgende eigenschappen hebben: De tabel is tweedimensionaal met rijen en ...

Bewerkers keuze

Een kijkje nemen in het syndroom van Empty-Nest - dummies

Een kijkje nemen in het syndroom van Empty-Nest - dummies

Een veel voorkomende misvatting is dat wanneer de kinderen van een stel vertrekken thuis, zullen pappa en mama het syndroom van empty-nest ontwikkelen. Ja, ze hebben misschien een leeg nest, maar voor sommige paren bloeit hun liefdesleven in deze periode van hun leven. De slachtoffers van het syndroom zijn de paren waarvan de relatie uit elkaar valt als zij de enige ...

STD's: wat u moet weten over herpes - dummies

STD's: wat u moet weten over herpes - dummies

Herpes, veroorzaakt door het herpes simplex-virus (HSV) ), is een ongeneeslijke SOA. Herpes heeft eigenlijk twee vormen: herpes simplex-type 1 (HSV-1) en herpes simplex-type 2 (HSV-2). HSV-1 wordt meestal geassocieerd met koortsblaasjes en koortsblaren boven de taille. "Ongeveer 80 procent van de Amerikaanse volwassenen heeft orale herpes. Ongeveer 25 procent van ...

Tiener Geslacht: hoe te weten Hoe ver te gaan - dummies

Tiener Geslacht: hoe te weten Hoe ver te gaan - dummies

Een van de grootste vragen voor tieners is niet "Zou ik seks moeten hebben? "Maar" Hoe ver moet ik gaan? "Terwijl het eigen comfortniveau en dat van de partner de topprioriteit zou moeten zijn in deze beslissing, spelen andere factoren een rol, vooral als tieners dat amorfe concept van" het derde honk overwegen. "" Derde basis "...

Bewerkers keuze

Tien voorwaarden American Football Announcers Gebruik - dummies

Tien voorwaarden American Football Announcers Gebruik - dummies

Een van de moeilijkste en meest intimiderende onderdelen over het volgen van een Amerikaans voetbalwedstrijd is dat de presentatoren soms een vreemde taal lijken te spreken die alleen bekend is bij echte voetballiefhebbers. Maar als je een aantal belangrijke termen onthoudt, ben je ver voor op het spel. Hier zijn enkele voetbaltermen die je misschien hoort, ...

Het begin van een voetbalspel: The Kickoff - dummies

Het begin van een voetbalspel: The Kickoff - dummies

Voor Amerikaanse voetbalfans, de openingsaftrap is een opwindende start voor elke game. Ze zien de tweezijdige sensatie van het ene team dat probeert het andere te blokkeren en helpt de herhaler om door en voorbij 11 snelladers van het trapende team te rennen. (Wel, maak die tien spelers.De kicker staat meestal rond de 50-yard-lijn, ...

Uw voetbalcoachtoelen afstemmen op een leeftijdsgroep - dummies

Uw voetbalcoachtoelen afstemmen op een leeftijdsgroep - dummies

Elk kind in uw team is anders zoveel manieren. Sommigen zijn begaafde hardlopers, anderen kunnen duizelingwekkende vangsten maken en wat moeite om simpelweg de basistechnieken van het spel te vatten. Ongeacht de sterke en zwakke punten van de kinderen, die overal op de kaart staan, hebben jongeren algemene kenmerken die worden beïnvloed ...