Σπίτι Προσωπικά Οικονομικά Δημιουργώντας τη δική σας UDLs σε C ++ - ανδρείκελα

Δημιουργώντας τη δική σας UDLs σε C ++ - ανδρείκελα

Πίνακας περιεχομένων:

Βίντεο: Writing 2D Games in C using SDL by Thomas Lively 2024

Βίντεο: Writing 2D Games in C using SDL by Thomas Lively 2024
Anonim

Η Standard Library, σε συνδυασμό με τα ενσωματωμένα χαρακτηριστικά της C ++, σας παρέχουμε μια ενδιαφέρουσα σειρά λογοτύπων. Ωστόσο, η πραγματική αξία των κυριοτέρων γίνεται πιο εμφανής όταν δημιουργείτε τη δική σας.

Υπάρχουν πολλές διαφορετικές ανάγκες που μπορείτε να απευθυνθείτε χρησιμοποιώντας Χρήσιμα Ορισμένα Λέιζερ (UDL), αλλά τρεις κοινές ανάγκες υποστηρίζουν μετατροπές δεδομένων, διευκολύνοντας την εργασία των προσαρμοσμένων τύπων και αποκτώντας τις επιθυμητές παρενέργειες χωρίς τον συνήθη αριθμό κωδικών.

Παρόλο που τα ενσωματωμένα ή τα πρότυπα βιβλιογραφικά βιβλία προέρχονται τόσο από πρόθεμα όσο και από επίθεμα, μπορείτε μόνο να δημιουργήσετε τη μορφή κατάληξης όταν καθορίζετε τα δικά σας κείμενα. Επιπλέον, η κατάληξη πρέπει να ξεκινά με μια υπογράμμιση. Η υπογράμμιση συμβάλλει στην αποτροπή συγκρούσεων με υπάρχοντα επιθήματα και για να εξασφαλίσει ότι άλλοι προγραμματιστές γνωρίζουν ότι η λέξη είναι μια συνήθης (μη τυπική) μορφή.

Ανάπτυξη μετατροπής UDL

Είναι δυνατή η ενσωμάτωση μετατροπών σε ένα UDL. Το μόνο που χρειάζεται να κάνετε αφού δημιουργήσετε ένα τέτοιο UDL είναι να δώσετε την κατάλληλη κατάληξη όταν καθορίζετε τη σταθερά για να αποκτήσετε το αποτέλεσμα που θέλετε. Το παράδειγμα CustomUDL01 επιδεικνύει μια τεχνική για τον ορισμό μιας μετατροπής που αλλάζει την είσοδο της ακτίνας στην περιοχή ενός κύκλου στη σταθερά.

#include χρησιμοποιώντας namespace std; constexpr μακρύ διπλό χειριστή»_circ (μακρύ διπλό ακτίνα) {ακτίνα επιστροφή * ακτίνα * 3 141 592?.} int main () {διπλή x = 5. 0_circ? cout << "περιοχής του κύκλου είναι:" << x << endl ? επιστρέψει 0?}

προκειμένου να δημιουργήσει την UDL, το παράδειγμα βασίζεται σε ένα constexpr με μια τιμή επιστροφής από μια μακρά διπλή και μία τιμή εισόδου, ακτίνα, από μια μακρά διπλή η εξίσωση για τον υπολογισμό της περιοχής ενός κύκλου. είναι πr 2 όπως μπορείτε να δείτε, το παράδειγμα εκτελεί το σωστό υπολογισμό, στο πλαίσιο της constexpr

.. <--3 -!>

Κάθε φορά που δημιουργείτε μια προσαρμοσμένη UDL, ο compiler σας υποχρεώνει να χρησιμοποιήσετε τον μεγαλύτερο τύπο για τη μετατροπή.Αυτό σημαίνει ότι πρέπει να χρησιμοποιήσετε ένα μακρύ διπλό για κυμαινόμενο σημείο literals και unsigned long long για ακέραια literals.Ακόμη και αν αργότερα επιλέγουν να χρησιμοποιήσουν ένα μικρότερο τύπο, όπως γίνεται σε αυτό για παράδειγμα δηλώνοντας το x ως διπλό, το ίδιο το γράμμα πρέπει να χρησιμοποιεί τον μεγαλύτερο δυνατό τύπο

Για να δηλώσει ένα UDL του νέου τύπου, το παράδειγμα δημιουργεί το x, το οποίο χρησιμοποιεί το επίθημα _circ. s το αποτέλεσμα στην οθόνη. Όταν εκτελείτε αυτό το παράδειγμα, θα δείτε ότι η σωστή τιμή έχει τοποθετηθεί στο x, όπως φαίνεται εδώ:

περιοχή του κύκλου είναι: 78. 5398

Η ανάπτυξη ενός προσαρμοσμένου τύπου UDL

Πολλοί τον κωδικό σας η συνάντηση βασίζεται σε ειδικούς τύπους που είναι δύσκολο να ακολουθηθούν και να κατανοηθούν.Η δημιουργία ενός UDL για απλούστευση του κώδικα καθιστά τα πράγματα πιο ξεκάθαρα και μειώνει τις πιθανότητες σφάλματος. Το παράδειγμα CustomUDL02 εμφανίζει έναν προσαρμοσμένο τύπο, ο χειριστής που χρησιμοποιήθηκε για τη δημιουργία του UDL, καθώς και τον τρόπο με τον οποίο χρησιμοποιείται το UDL για τον ορισμό ενός κυριολεκτικού.

#include χρησιμοποιώντας namespace std; struct MyType {MyType (διπλή είσοδος): Τιμή (Εισροή) {} διπλή τιμή?}; MyType operator "_mytype (μεγάλη διπλή τιμή) {επιστροφή MyType (τιμή);} int main () {auto UDLType = 145. 6_mytype; cout << uDLType. πρέπει να δημιουργήσετε έναν κατασκευαστή για τον τύπο που δέχεται τον αριθμό των εισόδων που απαιτούνται για τη διαμόρφωση του τύπου.Στο ελάχιστο, ο κατασκευαστής πρέπει να αποδεχθεί έναν τύπο ή την τιμή εισόδου που ο χρήστης παρέχει είναι χαμένος

. δεν υποστηρίζουν τον τύπο δεδομένων ίδιου μεγέθους όπως απαιτείται από τον χειριστή, αλλά πρέπει να είναι του ίδιου είδους.Για παράδειγμα, δεν θα μπορούσατε να μεταβάσετε ένα μεγάλο διπλό σε ένα int

Όταν εκτελείτε αυτό το παράδειγμα, βλέπετε μια έξοδο η αξία του 145. 6, η οποία είναι η τιμή που εισάγετε στον προσαρμοσμένο τύπο.Είναι δυνατό να χειριστείτε αρκετά πολύπλοκες ρυθμίσεις χρησιμοποιώντας αυτή την προσέγγιση.Ο χρήστης του προσαρμοσμένου σας τύπου αποκτά τη δυνατότητα να δημιουργήσει έναν σαφή κώδικα ο οποίος είναι εύκολος στην παρακολούθηση και ερμηνεία ακόμα και όταν οι υποκείμενοι τύποι είναι περίπλοκοι.

Χρήση ενός προσαρμοσμένου UDL για παρενέργειες

Ένα από τα πιο ενδιαφέροντα u (UDL) είναι η δημιουργία

παρενεργειών (μια λειτουργία διαφορετική από τη συνηθισμένη ή κανονική λειτουργία, είτε για να καταστήσει την εφαρμογή πιο σύντομη και αποτελεσματικότερη είτε για να προσφέρει πρόσθετη ευελιξία). Θέλετε να ορίσετε ένα συγκεκριμένο είδος πράξης που λαμβάνει χώρα ως αποτέλεσμα του ορισμού του κυριολεκτικού. Αυτό που παίρνετε είναι ακόμα κυριολεκτικό, αλλά κυριολεκτικό που δεν σημαίνει απαραίτητα μια αξία που σκοπεύετε να χρησιμοποιήσετε αργότερα. Το παράδειγμα CustomUDL03 δείχνει μια τέτοια μη παραδοσιακή χρήση.

#include χρησιμοποιώντας namespace std; () () (int (i =)) () () () () Παρατηρήστε ότι ο χειριστής _countdown δεν είναι συνημμένος σε κάτι που συνηθίζετε να συσχετίζετε με μια τιμή.Στην πραγματικότητα, δεν επιστρέφει μια τιμή καθόλου.Αυτό που παίρνετε αντ 'αυτού είναι μια παρενέργεια.Όταν τρέχετε αυτό το παράδειγμα, εσείς βλέπε αυτή την έξοδο

10 9 8 7 6 5 4 3 2 1 0

Αυτό που συνέβη είναι ότι ο μεταγλωττιστής έχει αντικαταστήσει το 10_countdown με ξεχωριστές δηλώσεις cout, ένα για κάθε επανάληψη του βρόχου. 11 παράμετροι cout που εκπέμπουν τις τιμές μεταξύ 10 και 0 (σε αντίστροφη σειρά) Το UDL παρενέργειας ανοίγει όλα τα είδη των ενδιαφέρουσες δυνατότητες για τη δημιουργία κώδικα που απλοποιεί ορισμένες επαναλαμβανόμενες εργασίες με τρόπο που καθιστά προφανή τη χρήση τους

Δημιουργώντας τη δική σας UDLs σε C ++ - ανδρείκελα

Η επιλογή των συντακτών

Πώς να αλλάξετε τη ρύθμιση ισορροπίας λευκού σε ετικέτες Canon EOS 70D

Πώς να αλλάξετε τη ρύθμιση ισορροπίας λευκού σε ετικέτες Canon EOS 70D

Χρησιμοποιώντας το Ο έλεγχος εξισορρόπησης λευκού στο Canon EOS 70D σας μπορεί εύκολα και γρήγορα να διορθώσει προβλήματα χρώματος. Οι διαθέσιμες ρυθμίσεις ισορροπίας λευκού απεικονίζονται με τα σύμβολα που εμφανίζονται στον παρακάτω πίνακα. Μπορείτε να δείτε την τρέχουσα ρύθμιση στην οθόνη Ρυθμίσεις λήψης, όπως φαίνεται στο παρακάτω σχήμα. Για να προσαρμόσετε τη ρύθμιση, έχετε ...

Η επιλογή των συντακτών

Προετοιμασία αντιγράφου TIFF ψηφιακής εικόνας για δημοσίευση - ανδρεικέλες

Προετοιμασία αντιγράφου TIFF ψηφιακής εικόνας για δημοσίευση - ανδρεικέλες

Μπορείτε να δημιουργήσετε αντίγραφο TIFF ψηφιακής εικόνας εύκολα. Για παράδειγμα, εάν θέλετε να υποβάλετε μια ψηφιακή φωτογραφία σε μια δημοσίευση εκτύπωσης, χρειάζεστε ένα αρχείο φωτογραφίας μορφής TIFF. Για να δημιουργήσετε ένα αντίγραφο TIFF ενός αρχείου σε ένα πρόγραμμα επεξεργασίας φωτογραφιών:

Εξάγοντας το περίγραμμα επιλογής του ψηφιακού σας επεξεργαστή εικόνας - ανδρείκελα

Εξάγοντας το περίγραμμα επιλογής του ψηφιακού σας επεξεργαστή εικόνας - ανδρείκελα

Η πρώτη προσπάθεια. Αναμείνετε να βελτιώσετε το περίγραμμα επιλογής σας τουλάχιστον λίγο. Μπορείτε να βελτιώσετε το περίγραμμα σας με διάφορους τρόπους: Αντίστροφη περιγράμματος επιλογής: Απλά χρησιμοποιήστε την εντολή Invert (ή την αντίστοιχη εντολή του προγράμματος). Προσθέστε σε περίγραμμα επιλογής: ...

Επιλογή από τις άκρες της ψηφιακής εικόνας - ανδρείκελα

Επιλογή από τις άκρες της ψηφιακής εικόνας - ανδρείκελα

Όπου οι φωτεινές περιοχές πληρούν τις σκοτεινές περιοχές. Πολλά προγράμματα επεξεργασίας φωτογραφιών σας επιτρέπουν να σχεδιάσετε ένα περίγραμμα επιλογής κατά μήκος ενός άκρου. Το εργαλείο αναζητά άκρες κοντά στο σημείο που σύρετε το ποντίκι.

Η επιλογή των συντακτών

Πώς να χρησιμοποιείτε το παράθυρο μητρώου του QuickBooks 2010 - dummies

Πώς να χρησιμοποιείτε το παράθυρο μητρώου του QuickBooks 2010 - dummies

Για να εργαστείτε ευκολότερα με το παράθυρο του Μητρώου και να ελέγξετε τον τρόπο εμφάνισής του: Το κουμπί Μετάβαση: Εμφανίζει το παράθυρο διαλόγου Μετάβαση (Go To). Αυτό το παράθυρο διαλόγου σάς επιτρέπει να αναζητήσετε μια συναλλαγή στο παράθυρο "Εγγραφή". Για παράδειγμα, μπορείτε να αναζητήσετε ...

Πώς να εργάζεστε με έναν υπάρχοντα προϋπολογισμό σε QuickBooks - dummies

Πώς να εργάζεστε με έναν υπάρχοντα προϋπολογισμό σε QuickBooks - dummies

Σε μεγάλες εταιρείες με εκατοντάδες ή χιλιάδες εργαζόμενοι, δύο ή τρία άτομα δαπανούν μεγάλο μέρος ή και ολόκληρο το χρόνο εργασίας τους με τα στοιχεία που έχουν εγγραφεί στον προϋπολογισμό. Για να επεξεργαστείτε έναν υπάρχοντα προϋπολογισμό στο QuickBooks, ακολουθήστε τα παρακάτω βήματα:

Πώς να χρησιμοποιείτε τα κουτιά παραθύρων αναφορών του QuickBooks - dummies

Πώς να χρησιμοποιείτε τα κουτιά παραθύρων αναφορών του QuickBooks - dummies

Από, Προς, Στήλες και Ταξινόμηση. Αυτά τα πλαίσια σας επιτρέπουν επίσης να ελέγχετε τις πληροφορίες που εμφανίζονται στο παράθυρο αναφοράς και την εμφάνιση των πληροφοριών. Για παράδειγμα, μπορείτε να ενημερώσετε το QuickBooks για το χρονικό διάστημα που θέλετε ...