Κατασκευαστές κλάσης C ++

C Class Constructors



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

Σε αυτό το άρθρο, θα εξετάσουμε όλους αυτούς τους τύπους κατασκευών με παραδείγματα.







Παράδειγμα 1

Αυτή είναι μια απεικόνιση ενός προεπιλεγμένου κατασκευαστή. Όπως γνωρίζουμε ότι οι κατασκευαστές δημιουργούνται αυτόματα όταν δημιουργούμε ένα αντικείμενο μιας κλάσης. Αυτό ονομάζεται σιωπηρή δημιουργία. Οι κατασκευαστές είναι με το ίδιο όνομα που είναι το όνομα της τάξης. Εξετάστε ένα αρχείο που έχει τον κώδικα c ++ του κατασκευαστή, καθώς γνωρίζουμε ότι η κλάση έχει δύο επιλογές, ιδιωτική και δημόσια. Το ιδιωτικό μέρος περιέχει τις μεταβλητές δεδομένων, ενώ το δημόσιο μέρος είναι για τις συναρτήσεις που ανακτήθηκαν από οποιοδήποτε αντικείμενο. Ο κατασκευαστής λοιπόν ορίζεται και στο δημόσιο μέρος.



Ακέραιος αριθμός()

{

Χ=πενήντα?

και=είκοσι?

}?

Σε αυτόν τον κατασκευαστή, οι τιμές εκχωρούνται στις μεταβλητές. Εάν θέλουμε να λάβουμε τις τιμές ως έξοδο, πρέπει να τις εκτυπώσουμε στο κύριο πρόγραμμα.







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

Μπορούμε να δούμε την έξοδο του πηγαίου κώδικα από το τερματικό στο Ubuntu. Η προσέγγιση που χρησιμοποιείται για τη λήψη της εξόδου είναι αρκετά εύκολη. Πρώτα καταρτίζεται ο κώδικας και μετά εκτελείται. Χρησιμοποιούμε τον μεταγλωττιστή G ++ για τη διαδικασία μεταγλώττισης. Ακριβώς όπως στην περίπτωση του C, χρησιμοποιούμε το GCC.



$ G++ -ή filec filec.ντο

Το/filec

-O χρησιμοποιείται για την αποθήκευση της εξόδου στο αρχείο.

Παράδειγμα 2

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

  • Χρησιμοποιείται για την προετοιμασία διαφορετικών μεταβλητών με διαφορετικές τιμές στο εσωτερικό των κατασκευαστών όταν αρχικοποιείται.
  • Χρησιμοποιείται σε υπερφόρτωση κατασκευαστών. Ορίζεται αργότερα στο άρθρο.

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

Ακέραιος αριθμός( intΧ,intκαι)

{

ΠΡΟΣ ΤΟ=Χ?

σι=και?

}?

Στο προηγούμενο παράδειγμα, οι μεταβλητές μέσα στον κατασκευαστή έλαβαν τις τιμές. Ενώ σε αυτόν τον κατασκευαστή, οι μεταβλητές εκχωρούνται με τις μεταβλητές να έχουν την τιμή.

Εάν θέλουμε να κάνουμε εμφάνιση, πρέπει να ορίσουμε μια συνάρτηση που θα επιστρέψει την τιμή καθώς δεν είναι δυνατή η πρόσβαση σε αυτήν την αρχική μεταβλητή απευθείας από τον κατασκευαστή.

intgetX()

{

ΕΠΙΣΤΡΟΦΗπρος το?

}?

Τώρα θα δούμε το κύριο μέρος του προγράμματος. Εδώ, όταν δημιουργείται το αντικείμενο, μπορείτε να δείτε τις τιμές στην ενότητα παραμέτρων.

Ακέραιος v(70,55)? {σιωπηρή}

ακέραιος αριθμός v=ακέραιος αριθμός(10,δεκαπέντε)? {σαφής}

Και για να εμφανιστεί το αποτέλεσμα, θα καλέσουμε τις συναρτήσεις που δημιουργήθηκαν μέσα στην τάξη χρησιμοποιώντας το αντικείμενο. δηλ. v.getx ().

Η μέθοδος ανάκτησης εγγραφών είναι η ίδια που είχε εισαχθεί προηγουμένως.

Παράδειγμα 3

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

Τείχος(τείχος&obj)

{

Μήκος=objμήκος?

Υψος=objύψος?

}

Πρέπει να υπολογίσουμε το εμβαδόν, οπότε η συνάρτηση για αυτόν τον υπολογισμό ορίζεται εδώ. Αυτό θα επιστρέψει την τιμή στην κύρια συνάρτηση όταν κληθεί. Τώρα θα παρατηρήσουμε το κύριο πρόγραμμα του κώδικα

Η κλήση λειτουργίας του αντιγράφοντος κατασκευαστή θα είναι έτσι.

Τοίχος τοίχου 2=τοίχος1?

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

Από την έξοδο, μπορείτε να δείτε ότι το αποτέλεσμα και από τους δύο κατασκευαστές είναι το ίδιο. Αυτό σημαίνει ότι όλα τα δεδομένα αντιγράφηκαν με επιτυχία από το αντικείμενο.

Παράδειγμα 4

Αυτή είναι μια απεικόνιση της υπερφόρτωσης του κατασκευαστή. Συμβαίνει όταν πρέπει να χρησιμοποιήσουμε περισσότερες από μία συναρτήσεις μέσα στην τάξη. Η υπερφόρτωση κατασκευαστών ακολουθεί τις οδηγίες παραμετροποιημένων κατασκευαστών. Όλοι οι κατασκευαστές της τάξης έχουν παρόμοιο όνομα με την κλάση. Αλλά σε κάθε έναν από τους κατασκευαστές εκχωρούνται διαφορετικές παράμετροι. Κάθε κατασκευαστής καλείται σύμφωνα με το όρισμα όταν δημιουργούμε το αντικείμενο.

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

// Κατασκευαστής με δύο ορίσματα

σχήμα(intΧ,intκαι)

{

προς το=Χ?

σι=και?

}?

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

Σχήμα s?

Σχήμα s2(8)?

Σχήμα s3(4,2)?

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

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

Από την έξοδο, μπορούμε να δούμε ότι η απάντηση είναι η ίδια για κάθε κατασκευαστή.

συμπέρασμα

Σε αυτό το σεμινάριο, έχουμε δει τα βασικά των κατασκευαστών και τις λειτουργίες τους, συμπεριλαμβανομένου του τρόπου υπερφόρτωσής τους. Οι κατασκευαστές χρησιμοποιούνται για την προετοιμασία των μεταβλητών με τις τιμές.