Πώς να εφαρμόσετε υπερφόρτωση χειριστή στο c ++;



Σε αυτό το άρθρο θα εξετάσουμε μια άλλη αντικειμενοστρεφή ιδέα που καθιστά τον χειριστή εύκολο. Θα μάθαμε Υπερφόρτωση χειριστή σε C ++.

Σε αυτό το άρθρο θα διερευνήσουμε μια ακόμη αντικειμενοστρεφή ιδέα που κάνει τον χειριστή εύκολο. Δηλαδή θα έμπαινε στις λεπτομέρειες του χειριστή Υπερφόρτωση σε C ++ . Οι ακόλουθοι δείκτες θα καλυφθούν σε αυτό το άρθρο,

Ας ξεκινήσουμε λοιπόν με αυτό το άρθρο σχετικά με την υπερφόρτωση χειριστή στο C ++.





Υπερφόρτωση σε C ++

Εάν δημιουργήσουμε δύο ή περισσότερα μέλη της ίδιας κλάσης με το ίδιο όνομα αλλά διαφορετικό σε αριθμό ή τύπο παραμέτρου, είναι γνωστό ως υπερφόρτωση C ++.



Στο C ++, μπορούμε να υπερφορτώσουμε:

  • μεθόδους
  • κατασκευαστές
  • ευρετηριασμένες ιδιότητες

Είναι επειδή αυτά τα μέλη έχουν μόνο παραμέτρους.

μαριονέτα εναντίον σεφ εναντίον λιμενεργάτη

Προχωρώντας με αυτό το άρθρο σχετικά με την υπερφόρτωση χειριστή στο C ++.



Τύποι υπερφόρτωσης σε C ++

  • Υπερφόρτωση λειτουργίας
  • Υπερφόρτωση χειριστή

Υπερφόρτωση - Υπερφόρτωση χειριστή σε C ++ - Edureka

Προχωρώντας με αυτό το άρθρο σχετικά με την υπερφόρτωση χειριστή στο C ++.

Γιατί χρησιμοποιείται υπερφόρτωση χειριστή;

Τα προγράμματα C ++ μπορούν να γραφτούν χωρίς τη γνώση της υπερφόρτωσης του χειριστή. Και πάλι, οι χειριστές λειτουργούν βαθιά από τους προγραμματιστές για να κάνουν το πρόγραμμα διαισθητικό. Για παράδειγμα,

Μπορούμε να αντικαταστήσουμε τον κωδικό όπως:

υπολογισμός = προσθήκη (διαίρεση (a, b), πολλαπλασιασμός (a, b))

Για εξίσωση

υπολογισμός = (a / b) + (a * b)

Η υπερφόρτωση χειριστή παρέχει έναν απλό και εύκολο τρόπο για την ανάπτυξη νέων ορισμών για τους περισσότερους από τους χειριστές στο C ++. Με επαρκείς γνώσεις, μπορούμε σχεδόν να δημιουργήσουμε μια δική μας γλώσσα με τη δημιουργική χρήση των τεχνικών λειτουργίας και υπερφόρτωσης χειριστή. Μπορούμε να υπερφορτώσουμε όλους τους χειριστές στο C ++ εκτός από τα ακόλουθα:
● Τελεστής εμβέλειας (: :)
● Τελεστής μεγέθους (Sizeof)
● επιλογέας μέλους (.)
● επιλογέας δείκτη μέλους (*)
● τριαδικός χειριστής (? :)

Σύνταξη υπερφόρτωσης χειριστή

τι είναι το hashmap και hashtable στο java
return_type class_name:: χειριστής op (argument_list) {// function body}

Όπου ο τύπος επιστροφής είναι ο τύπος της τιμής που επιστρέφεται από τη συνάρτηση. class_name είναι το όνομα της κλάσης.

Προχωρώντας με αυτό το άρθρο σχετικά με την υπερφόρτωση χειριστή στο C ++.

Υλοποίηση υπερφόρτωσης χειριστή σε C ++

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

Ποια είναι η διαφορά μεταξύ λειτουργιών χειριστή και κανονικών λειτουργιών;

Οι λειτουργίες χειριστή είναι ίδιες με τις κανονικές λειτουργίες. Η μόνη διαφορά είναι ότι το όνομα μιας λειτουργίας χειριστή είναι πάντα λέξη-κλειδί χειριστή ακολουθούμενο από το σύμβολο του χειριστή και οι λειτουργίες του χειριστή καλούνται όταν χρησιμοποιείται ο αντίστοιχος χειριστής.

Προχωρώντας με αυτό το άρθρο σχετικά με την υπερφόρτωση χειριστή στο C ++.

Τύποι προσεγγίσεων υπερφόρτωσης

Υπερφόρτωση χειριστή μπορεί να γίνει χρησιμοποιώντας τρεις προσεγγίσεις

  • Υπερφόρτωση unary χειριστή.
  • Υπερφόρτωση δυαδικού χειριστή.
  • Υπερφόρτωση δυαδικού χειριστή χρησιμοποιώντας μια λειτουργία φίλου.

Προχωρώντας με αυτό το άρθρο σχετικά με την υπερφόρτωση χειριστή στο C ++.

Υπερφόρτωση Unary Operator

Ας θεωρήσουμε τον unary «-» τελεστή. Ένας χειριστής πλην όταν χρησιμοποιείται ως unary απαιτεί μόνο έναν τελεστή. Γνωρίζουμε ότι αυτός ο τελεστής αλλάζει το σημάδι ενός τελεστή όταν εφαρμόζεται σε μια βασική μεταβλητή δεδομένων. Ας δούμε πώς να υπερφορτώσουμε αυτόν τον τελεστή ώστε να μπορεί να εφαρμοστεί σε ένα αντικείμενο με τον ίδιο τρόπο όπως εφαρμόζεται σε μια μεταβλητή int ή float. Το unary μείον, όταν εφαρμόζεται σε ένα αντικείμενο, θα πρέπει να μειώσει κάθε ένα από τα στοιχεία δεδομένων του.

Παράδειγμα:

#include χρησιμοποιώντας το namespace std class Height {public: // Member Objects int feet, inch // Κατασκευαστής για να αρχικοποιήσετε την τιμή του αντικειμένου Height (int f, int i) {feet = f inch = i} // Υπερφόρτωση (-) χειριστή για εκτελέστε μείωση // λειτουργία χειριστή κενού αντικειμένου ύψους- () {πόδια - ίντσα - cout<< 'Feet & Inches after decrement: ' << feet << ' ' ' << inch <

Παραγωγή:

Εξήγηση:
Στο παραπάνω παράδειγμα, υπερφορτώνουμε τον unary τελεστή για να εκτελέσουμε μείωση στις δύο μεταβλητές της κλάσης Height. Περνάμε δύο παραμέτρους στον κατασκευαστή και αποθηκεύουμε τις τιμές τους σε μεταβλητή ποδιών και ιντσών. Στη συνέχεια ορίζουμε τη λειτουργία υπερφόρτωσης του χειριστή (void operator- ()
) στην οποία οι δύο μεταβλητές μειώνονται κατά μία θέση.
Όταν γράφουμε -h1 καλεί τη λειτουργία υπερφόρτωσης του χειριστή και μειώνει τις τιμές που μεταβιβάζονται στον κατασκευαστή.

Προχωρώντας με αυτό το άρθρο σχετικά με την υπερφόρτωση χειριστή στο C ++.

Υπερφόρτωση δυαδικού χειριστή

Πρόκειται για υπερφόρτωση ενός χειριστή που λειτουργεί σε δύο τελεστές. Ας πάρουμε το ίδιο παράδειγμα της κατηγορίας Height, αλλά αυτή τη φορά, προσθέστε δύο αντικείμενα Height h1 και h2.

Παράδειγμα:

#include χρησιμοποιώντας namespace std class Ύψος {δημόσιο: int πόδια, ίντσα Ύψος () {πόδια = 0 ίντσα = 0} Ύψος (int f, int i) {feet = f inch = i} // Υπερφόρτωση (+) χειριστής για εκτέλεση προσθήκη // αντικειμένου δύο αποστάσεων χρησιμοποιώντας δυαδικό χειριστή Χειριστής ύψους + (Ύψος & d2) // Κλήση με αναφορά {// Δημιουργία αντικειμένου για επιστροφή Ύψος h3 // Εκτέλεση προσθήκης ποδιών και ιντσών h3.feet = πόδια + d2.feet h3. inch = inch + d2.inch // Επιστροφή του αντικειμένου που επιστρέφει h3}} int main () {Ύψος h1 (3, 7) Ύψος h2 (6, 1) Ύψος h3 // Χρήση υπερφορτωμένου χειριστή h3 = h1 + h2 cout<< 'Sum of Feet & Inches: ' << h3.feet << ''' << h3.inch << endl return 0 } 

Παραγωγή:

Εξήγηση:
Χειριστής ύψους + (Ύψος & h2), εδώ επιστρέφει_ τύπος συνάρτησης είναι κλάση Ύψος, επομένως επιστρέφει ένα αντικείμενο h3 της τάξης Ύψος. Στη γραμμή h3 = h1 + h2, το h1 καλεί τη λειτουργία χειριστή των αντικειμένων της κλάσης και παίρνει το h2 ως παράμετρο, τότε εφαρμόζουμε h3.feet = feet + d2.feet και h3.inch = inch + d2.inch που αποθηκεύει το άθροισμα των τιμών των μεταβλητών πόδια και ίντσα σε μεταβλητές που σχετίζονται με το αντικείμενο h3.
Όταν η δήλωση «h3 = h1 + h2» επικαλείται τη λειτουργία υπερφορτωμένου χειριστή, το αντικείμενο h1 ανέλαβε την ευθύνη να επικαλεστεί τη συνάρτηση και το h2 παίζει το ρόλο του επιχειρήματος που μεταβιβάζεται στη συνάρτηση. Η παραπάνω δήλωση επίκλησης είναι ισοδύναμη με h3 = h1. χειριστής + (h2) επομένως το μέλος δεδομένων του h2 έχει άμεση πρόσβαση και το μέλος δεδομένων του h2 (το οποίο περνά ως επιχείρημα) έχει πρόσβαση μέσω του τελεστή κουκκίδων.

Κανόνες για υπερφόρτωση χειριστή

  • Μόνο οι υπάρχοντες χειριστές μπορούν να υπερφορτωθούν και οι νέοι χειριστές δεν μπορούν να υπερφορτωθούν
  • Ο υπερφορτωμένος χειριστής πρέπει να περιέχει τουλάχιστον έναν τελεστή του τύπου δεδομένων που καθορίζεται από το χρήστη.
  • Δεν χρησιμοποιούμε μια λειτουργία φίλου για υπερφόρτωση συγκεκριμένων χειριστών. Ωστόσο, οι λειτουργίες των μελών μπορούν να χρησιμοποιηθούν για την υπερφόρτωση αυτών των χειριστών.
  • Όταν οι unary τελεστές υπερφορτώνονται μέσω μιας συνάρτησης μέλους, δεν λαμβάνουν ρητά ορίσματα, αλλά, εάν είναι υπερφορτωμένοι από μια συνάρτηση φίλου, παίρνουν ένα όρισμα.
  • Όταν οι δυαδικοί χειριστές είναι υπερφορτωμένοι μέσω μιας συνάρτησης μέλους, λαμβάνουν ένα ρητό όρισμα και εάν είναι υπερφορτωμένοι μέσω μιας συνάρτησης φίλου, λαμβάνουν δύο ρητά ορίσματα.

Έτσι, έχουμε φτάσει στο τέλος αυτού του άρθρου με θέμα «Υπερφόρτωση χειριστή σε C ++». Αν θέλετε να μάθετε περισσότερα, δείτε το Java Training από την Edureka, μια αξιόπιστη διαδικτυακή εταιρεία μάθησης. Το Edureka's Τα μαθήματα έχουν σχεδιαστεί για να σας εκπαιδεύσουν τόσο για βασικές όσο και για προχωρημένες ιδέες Java μαζί με διάφορα πλαίσια Java όπως το Hibernate & Spring.

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

μήκος ενός javascript πίνακα