classes objects c
Μια σύντομη εισαγωγή στις τάξεις και τα αντικείμενα στο C ++.
Οι τάξεις και τα αντικείμενα είναι τα δομικά στοιχεία του αντικειμενοστρεφούς προγραμματισμού στο C ++. Κάθε οντότητα, ζωντανή ή μη, μπορεί να αναπαρασταθεί ως αντικείμενο και να προγραμματιστεί ανάλογα χρησιμοποιώντας το C ++. Έτσι οντότητες όπως αυτοκίνητο, γραφείο, πρόσωπο, πουλί, ζώο κ.λπ. μπορούν να αναπαρασταθούν ως αντικείμενα.
Η κλάση είναι ένα επίπεδο υψηλότερο από το αντικείμενο και αντιπροσωπεύει την κατηγορία των αντικειμένων. Έτσι, η τάξη λειτουργεί ως σχεδιάγραμμα που σκιαγραφεί το σχεδιασμό και τις λεπτομέρειες του αντικειμένου. Αυτό περιλαμβάνει δεδομένα που χρησιμοποιούνται για την περιγραφή του αντικειμένου και διάφορες μεθόδους ή λειτουργίες που μπορούν να δράσουν στα δεδομένα αντικειμένου.
=> Παρακολουθήστε την απλή σειρά εκπαίδευσης C ++ εδώ.
Σε αυτό το σεμινάριο, συζητάμε όλες τις λεπτομέρειες της τάξης και των αντικειμένων στο C ++ μαζί με την αναπαράσταση μέσω προγραμματισμού.
Τι θα μάθετε:
- Μαθήματα
- Αντικείμενα
- Προσδιοριστές πρόσβασης
- Κατασκευαστές
- Τύποι Κατασκευαστών
- Διαχειριστής ανάθεσης
- Καταστροφείς
- «Αυτό» Δείκτης
- συμπέρασμα
- Συνιστώμενη ανάγνωση
Μαθήματα
Μια τάξη στο C ++ μπορεί να θεωρηθεί ως σχέδιο ή σκελετός μιας συγκεκριμένης οντότητας. Η κλάση είναι ένας τύπος δεδομένων που καθορίζεται από το χρήστη. Περιέχει τις γενικές πληροφορίες ή δεδομένα για τη συγκεκριμένη οντότητα και τις λειτουργίες που λειτουργούν σε αυτήν την οντότητα.
Στη σύνταξη C ++, ορίζουμε μια κλάση με τη λέξη-κλειδί 'class' ακολουθούμενη από το όνομα της τάξης.
Το όνομα της τάξης ακολουθείται από τις λεπτομέρειες της τάξης που περικλείεται σε σγουρά τιράντες και τερματίζεται με ερωτηματικό.
Το παρακάτω μπλοκ δείχνει τη γενική σύνταξη για τον ορισμό της κλάσης.
Όπως φαίνεται στην παραπάνω αναπαράσταση, η τάξη μπορεί να έχει καθοριστές πρόσβασης όπως δημόσιο / προστατευμένο / ιδιωτικό. Μπορεί να έχει μέλη δεδομένων και λειτουργίες μέλους. Τα δεδομένα και οι συναρτήσεις καλούνται ως μέλη της τάξης. Από προεπιλογή, τα μέλη είναι ιδιωτικά στην τάξη, έτσι ώστε καμία εξωτερική οντότητα να έχει πρόσβαση σε αυτά τα μέλη.
Για παράδειγμα, ένα όχημα μπορεί να είναι μια γενικευμένη κατηγορία με ιδιότητες όπως ένα μοντέλο, χρώμα, αριθ. πλαισίου, μέση ταχύτητα_ κ.λπ. Μπορεί να έχει λειτουργίες όπως αλλαγή μοντέλου, επιτάχυνση, επιβράδυνση κ.λπ. που εκτελούν ενέργειες στα μέλη δεδομένων. Μπορούμε να ορίσουμε μια κλάση με το όνομα «όχημα» που θα έχει όλα αυτά τα μέλη δεδομένων και τις λειτουργίες.
Όπως προαναφέρθηκε, μια τάξη είναι απλώς ένα σχεδιάγραμμα για τις οντότητες. Δεν παίρνει χώρο στη μνήμη όταν ορίζεται. Για να είναι λειτουργική μια τάξη, πρέπει να ορίσουμε αντικείμενα που μπορούν να κάνουν χρήση των μελών της τάξης.
Αντικείμενα
Προκειμένου να χρησιμοποιήσουμε τη λειτουργικότητα της τάξης, πρέπει να δημιουργήσουμε την τάξη για να δημιουργήσουμε ένα αντικείμενο. Ένα αντικείμενο είναι μια παρουσία μιας κλάσης. Απλές λέξεις, μπορούμε να πούμε ότι ένα αντικείμενο είναι μια μεταβλητή της κλάσης τύπου.
Η γενική σύνταξη για τη δημιουργία ενός αντικειμένου είναι:
classname object_name;
Μόλις δημιουργηθεί το αντικείμενο, μπορεί να χρησιμοποιηθεί για πρόσβαση στα μέλη δεδομένων και τις λειτουργίες αυτής της κλάσης.
Η πρόσβαση στα μέλη της κλάσης (δεδομένα και συναρτήσεις) γίνεται χρησιμοποιώντας τον τελεστή κουκκίδας (.), Ο οποίος καλείται επίσης ως φορέας πρόσβασης μέλους.
Εάν το obj είναι το όνομα του αντικειμένου και υπάρχει μια συνάρτηση 'display ()' στην τάξη, τότε η συνάρτηση μπορεί να προσπελαστεί ως 'obj.display ()'.
Ωστόσο, υπάρχει μια παγίδα στην παραπάνω δήλωση. Μπορούμε να αποκτήσουμε πρόσβαση στην οθόνη λειτουργίας () χρησιμοποιώντας ένα αντικείμενο και τον χειριστή κουκίδων εάν η λειτουργία είναι 'δημόσια'.
Προσδιοριστές πρόσβασης
Στο C ++, η πρόσβαση στα μέλη δεδομένων και στις λειτουργίες της κλάσης εξαρτάται από την πρόσβαση που παρέχεται σε αυτό το συγκεκριμένο μέλος δεδομένων ή τη λειτουργία χρησιμοποιώντας έναν προσδιοριστή πρόσβασης.
Το C ++ υποστηρίζει τους ακόλουθους προσδιοριστές πρόσβασης:
# 1) Ιδιωτικό
Αυτός είναι ο προεπιλεγμένος προσδιοριστής πρόσβασης για μια τάξη στο C ++. Αυτό σημαίνει ότι εάν δεν έχει καθοριστεί καθοριστής πρόσβασης για τα μέλη σε μια τάξη, τότε θεωρείται ιδιωτικό.
Όταν ένα μέλος είναι ιδιωτικό, δεν είναι δυνατή η πρόσβαση εκτός της τάξης. Ούτε το αντικείμενο και ο χειριστής κουκίδων. Η πρόσβαση στα μέλη προσωπικών δεδομένων είναι δυνατή μόνο χρησιμοποιώντας τις λειτουργίες των μελών της κλάσης.
ba ερωτήσεις και απαντήσεις συνέντευξης pdf
Ωστόσο, υπάρχει μια εξαίρεση σε αυτόν τον κανόνα, τον οποίο θα συζητήσουμε στα επόμενα θέματα.
# 2) Δημόσιο
Ένα μέλος δεδομένων ή μια λειτουργία που ορίζεται ως δημόσια στην τάξη είναι προσβάσιμη σε όλους εκτός της τάξης. Αυτά τα μέλη είναι προσβάσιμα χρησιμοποιώντας το αντικείμενο και τον χειριστή κουκίδων.
# 3) Προστατευμένο
Ένα προστατευόμενο μέλος μιας τάξης είναι προσβάσιμο στην ίδια την τάξη και στις παιδικές τάξεις αυτής της τάξης.
Αυτός ο προσδιοριστής πρόσβασης χρησιμοποιείται ειδικά σε περίπτωση κληρονομιάς και θα το συζητήσουμε λεπτομερώς ενώ συζητάμε για το θέμα της κληρονομιάς.
Ας πάρουμε το ακόλουθο παράδειγμα για να κατανοήσουμε καλύτερα αυτούς τους προσδιοριστές πρόσβασης.
#include #include using namespace std; class ABC{ int var1 = 10; public: string name; void display() { cout<<'var1 ='< Παραγωγή:
var1 = 10
όνομα = sth
Σε αυτό το πρόγραμμα, έχουμε δύο μέλη δεδομένων από τα οποία το var1 του τύπου int είναι ιδιωτικό (ο προσδιοριστής πρόσβασης δεν καθορίζεται. Η προεπιλογή είναι ιδιωτική). Ένα άλλο μέλος είναι το όνομα συμβολοσειράς, το οποίο δηλώνεται ως δημόσιο. Έχουμε μια ακόμη οθόνη λειτουργίας που εμφανίζει την αξία και των δύο αυτών μελών.
Στην κύρια συνάρτηση, δηλώνουμε ένα αντικείμενο abc της κλάσης ABC. Στη συνέχεια, ορίζουμε τιμές σε μέλη δεδομένων και επίσης στην οθόνη της λειτουργίας κλήσης χρησιμοποιώντας το αντικείμενο «abc».
Ωστόσο, όταν ο μεταγλωττιστής συναντά τη γραμμή abc.var1 = 20; Θα δημιουργήσει ένα σφάλμα ότι 'var1 είναι ιδιωτική μεταβλητή'.
Αυτό συμβαίνει επειδή δεν μπορούμε να έχουμε πρόσβαση σε προσωπικά δεδομένα μελών μιας κλάσης εκτός της τάξης. Έτσι υπάρχει ένα σφάλμα. Αλλά μπορούμε να το έχουμε πρόσβαση μέσα στη συνάρτηση και επομένως όταν εξάγουμε την τιμή του var1 στη λειτουργία οθόνης. δεν ρίχνει κανένα λάθος.
Εξ ου και η έξοδος του προγράμματος εμφανίζει την αρχική τιμή με την οποία δηλώνεται το var1.
Μέχρι στιγμής, έχουμε δει τις λεπτομέρειες σχετικά με τις κατηγορίες, τα αντικείμενα και τους προσδιοριστές πρόσβασης, τώρα ας πάρουμε ένα πλήρες παράδειγμα ενός δείγματος μαθητή τάξης. Αυτή η τάξη έχει μέλη δεδομένων: student_id, student_name και student_age. Έχει επίσης λειτουργίες μέλους για την ανάγνωση πληροφοριών μαθητή και την εμφάνιση πληροφοριών μαθητή.
Προκειμένου να κάνουμε τα πράγματα εύκολα για τους αναγνώστες, έχουμε δηλώσει όλα τα μέλη της τάξης ως δημόσια.
Το παρακάτω πρόγραμμα δείχνει την πλήρη εφαρμογή.
#include #include using namespace std; class student{ public: int student_id; string student_name; int student_age; void read_studentInfo(); void print_studentInfo() { cout<<'
Student ID : '<student_id; cout<>student_name; cout<>student_age; } int main() { student s1; s1.read_studentInfo(); s1.print_studentInfo(); }
Παραγωγή:
Εισαγάγετε αναγνωριστικό μαθητή: 1
Εισαγάγετε το όνομα_ μαθητή: abc
Εισαγάγετε την ηλικία του μαθητή: 12
Αναγνωριστικό μαθητή: 1
Όνομα μαθητή: abc
Ηλικία μαθητή: 12
Έτσι, έχουμε μια πλήρη κατηγορία που ορίζεται παραπάνω. Η μόνη αξιοσημείωτη διαφορά είναι ότι έχουμε ορίσει μία συνάρτηση 'print_studentInfo' μέσα στην τάξη ενώ η άλλη συνάρτηση 'read_studentinfo' ορίζεται εκτός της κλάσης. Αυτοί είναι οι δύο τρόποι με τους οποίους οι λειτουργίες των μελών μπορούν να οριστούν για μια τάξη.
Σημειώστε ότι η συνάρτηση που ορίζεται έξω εξακολουθεί να έχει μια δήλωση / πρωτότυπο μέσα στην τάξη. Επίσης, ορίζεται εκτός της τάξης χρησιμοποιώντας το τελεστής ανάλυσης εύρους (: :) . Στη συνέχεια, στην κύρια συνάρτηση, δημιουργούμε ένα αντικείμενο τάξης μαθητή και στη συνέχεια καλούμε συναρτήσεις για την ανάγνωση και προβολή των δεδομένων.
Κατασκευαστές
Μέχρι στιγμής σε αυτό το σεμινάριο, έχουμε δημιουργήσει ένα απλό αντικείμενο και στη συνέχεια εκχωρούμε τιμές σε κάθε μέλος δεδομένων της κλάσης στην κύρια συνάρτηση αφού διαβάσουμε αυτές τις τιμές από την τυπική είσοδο.
Σε αυτό το θέμα, θα ρίξουμε μια ματιά σε μια ειδική λειτουργία που χρησιμοποιείται για την προετοιμασία του αντικειμένου κατά τη δημιουργία του. Αυτή η ειδική λειτουργία ονομάζεται κατασκευαστής.
κανονικοποίηση στη βάση δεδομένων με πίνακες παραδείγματος
Ένας κατασκευαστής είναι μια συνάρτηση μέλους της κλάσης αλλά διαφέρει από την κανονική συνάρτηση μέλους με τους ακόλουθους τρόπους:
- Ο κατασκευαστής δεν έχει τιμή επιστροφής, δηλαδή ο κατασκευαστής δεν επιστρέφει ποτέ τιμή.
- Είναι μια λειτουργία δημόσιου μέλους της τάξης.
- Χρησιμοποιείται για την αρχικοποίηση των μελών δεδομένων και την κατασκευή του αντικειμένου της κλάσης.
- Καλείται αυτόματα από τον μεταγλωττιστή όταν δημιουργείται το αντικείμενο.
Τύποι Κατασκευαστών
Το C ++ υποστηρίζει τους ακόλουθους τύπους κατασκευαστών.
# 1) Προεπιλεγμένος κατασκευαστής
Ένας προεπιλεγμένος κατασκευαστής είναι ο βασικός κατασκευαστής και δεν έχει παραμέτρους. Μπορούμε να δημιουργήσουμε ένα απλό αντικείμενο χωρίς παραμέτρους χρησιμοποιώντας τον προεπιλεγμένο κατασκευαστή.
Ο προεπιλεγμένος κατασκευαστής έχει την ακόλουθη σύνταξη:
classname() { //constructor code }
Εάν μια κλάση δεν έχει έναν προεπιλεγμένο κατασκευαστή, τότε ο δημιουργός το δημιουργεί.
# 2) Παραμετροποιημένος Κατασκευαστής
Ένας παράμετρος κατασκευαστής είναι αυτός που έχει μια λίστα παραμέτρων με την οποία μπορούμε να αρχικοποιήσουμε τα μέλη της τάξης. Όταν δηλώνουμε ένα αντικείμενο σε έναν παραμετροποιημένο κατασκευαστή, τότε πρέπει να περάσουμε τις αρχικές τιμές στη συνάρτηση κατασκευαστή ως παραμέτρους.
Μια παραμετροποιημένη συνάρτηση κατασκευαστή φαίνεται όπως φαίνεται παρακάτω.
classname(argument list){ //constructor code }
Ένας παράμετρος κατασκευαστής χρησιμοποιείται για την υπερφόρτωση κατασκευαστών. Θα δούμε περισσότερα σχετικά με την υπερφόρτωση στα επόμενα θέματα.
Ένας παράμετρος κατασκευαστής χρησιμοποιείται με σκοπό την προετοιμασία μελών δεδομένων διαφορετικών αντικειμένων. Με αυτόν τον τρόπο, μπορούμε να μεταφέρουμε διαφορετικές τιμές των μελών δεδομένων σε διαφορετικά αντικείμενα.
# 3) Κατασκευαστές αντιγράφων
Το C ++ υποστηρίζει έναν τρίτο τύπο κατασκευαστή γνωστός ως Κατασκευαστής αντιγράφων. Η γενική του μορφή είναι
classname (const classname & obj);
Όπως φαίνεται στην παραπάνω δήλωση, στον κατασκευαστή αντιγράφων δημιουργείται ένα νέο αντικείμενο χρησιμοποιώντας τις τιμές ενός άλλου αντικειμένου της ίδιας κλάσης. Η παράμετρος που μεταδίδεται στον κατασκευαστή είναι η συνεχής αναφορά ενός αντικειμένου του οποίου οι τιμές θα χρησιμοποιηθούν για την κατασκευή του νέου αντικειμένου.
Ένας κατασκευαστής αντιγράφων καλείται συνήθως στις ακόλουθες περιπτώσεις:
- Όταν ένα αντικείμενο κλάσης επιστρέφεται από τιμή.
- Όταν ένα αντικείμενο μεταβιβάζεται σε μια συνάρτηση ως όρισμα και περνά από την τιμή.
- Όταν ένα αντικείμενο κατασκευάζεται από άλλο αντικείμενο της ίδιας κλάσης.
- Όταν δημιουργείται ένα προσωρινό αντικείμενο από τον μεταγλωττιστή.
Ωστόσο, δεν μπορούμε να εγγυηθούμε ότι ο κατασκευαστής αντιγράφων θα κληθεί σίγουρα σε όλες τις παραπάνω περιπτώσεις, καθώς ο μεταγλωττιστής C ++ έχει έναν τρόπο βελτιστοποίησης των λειτουργιών αντιγραφής.
Ένας κατασκευαστής αντιγράφων πραγματοποιεί αντίστροφα αντίγραφο μεταξύ αντικειμένων. Ακριβώς όπως ο προεπιλεγμένος κατασκευαστής, ο μεταγλωττιστής C ++ δημιουργεί έναν προεπιλεγμένο κατασκευαστή αντιγράφων εάν δεν το παρέχουμε στο πρόγραμμά μας. Αλλά όταν μια τάξη έχει συγκεκριμένα μέλη δεδομένων όπως δείκτες, αναφορές ή οποιαδήποτε κατανομή χρόνου εκτέλεσης των πόρων, τότε πρέπει να έχουμε τον δικό μας χρήστη που ορίζεται από τον κατασκευαστή αντιγράφων.
Ο λόγος είναι ότι ο προεπιλεγμένος κατασκευαστής αντιγράφων εκτελεί μόνο ένα ρηχό αντίγραφο των μελών δεδομένων, δηλαδή και τα δύο αντικείμενα θα μοιράζονται την ίδια θέση μνήμης. Αυτό είναι καλό για απλά μέλη δεδομένων χωρίς δείκτη.
Ωστόσο, όταν πρόκειται για δείκτες ή άλλα δυναμικά μέλη δεδομένων, θα θέλαμε τα δεδομένα να οδηγούν σε μια νέα θέση μνήμης. Αυτό είναι το αντίγραφο σε βάθος και μπορεί να επιτευχθεί μόνο χρησιμοποιώντας έναν κατασκευαστή αντιγράφων που καθορίζεται από το χρήστη.
Δίνεται παρακάτω ένα πλήρες πρόγραμμα C ++ που εφαρμόζει και τους τρεις τύπους κατασκευαστών και τη χρήση τους στην κατασκευή ενός αντικειμένου.
#include #include using namespace std; class student{ public: int student_id; string student_name; int student_age; //default constructor student(){ student_id = 1; student_name = 'abc'; student_age = 10; } //parameterized constructor student(int id,string name,int age){ student_id = id; student_name = name; student_age = age; } //copy constructor student(const student& st){ student_id = st.student_id; student_name = st.student_name; student_age = st.student_age; } void print_studentInfo() { cout<<'
Student ID : '< Παραγωγή:
********** s **********
Αναγνωριστικό μαθητή: 1
Όνομα μαθητή: abc
Ηλικία μαθητή: 10
********** s2 **********
Αναγνωριστικό μαθητή: 2
Όνομα μαθητή: xyz
Ηλικία μαθητή: 12
Το στιγμιότυπο οθόνης για το ίδιο δίνεται παρακάτω.

Σε αυτό το πρόγραμμα, έχουμε ορίσει έναν μαθητή τάξης παρόμοιο με αυτόν που ορίστηκε στο προηγούμενο πρόγραμμα. Η διαφορά είναι ότι αντί να διαβάζουμε τιμές μελών δεδομένων από τυπική είσοδο μέσω μιας συνάρτησης, ορίζουμε τρεις κατασκευαστές.
Είναι απολύτως δυνατό για μια τάξη να έχει περισσότερους από έναν κατασκευαστές. Έχουμε έναν προεπιλεγμένο κατασκευαστή που αρχικοποιεί τα μέλη δεδομένων σε αρχικές τιμές. Στη συνέχεια, ορίζουμε έναν παραμετροποιημένο κατασκευαστή που μεταβιβάζει τις αρχικές τιμές ως παραμέτρους στον κατασκευαστή.
Στη συνέχεια, ορίζουμε έναν κατασκευαστή αντιγράφων στον οποίο περνάμε μια συνεχή αναφορά σε ένα αντικείμενο της μαθητικής τάξης.
Στην κύρια συνάρτηση, δημιουργούμε τρία αντικείμενα ξεχωριστά χρησιμοποιώντας τρεις κατασκευαστές. Το πρώτο αντικείμενο δημιουργείται χρησιμοποιώντας τον προεπιλεγμένο κατασκευαστή. Το δεύτερο αντικείμενο s1 δημιουργείται χρησιμοποιώντας τον παραμετροποιημένο κατασκευαστή ενώ το τρίτο αντικείμενο s2 δημιουργείται χρησιμοποιώντας έναν κατασκευαστή αντιγράφων.
Σημειώστε τη δημιουργία του τρίτου αντικειμένου s2. Εδώ εκχωρούμε το ήδη δημιουργημένο αντικείμενο s1 στο νέο αντικείμενο s2. Έτσι, όταν κατασκευάζουμε ένα νέο αντικείμενο χρησιμοποιώντας το ήδη υπάρχον αντικείμενο, ένα πρόγραμμα δημιουργίας αντιγράφων καλείται από τον μεταγλωττιστή.
Διαχειριστής ανάθεσης
Μπορούμε επίσης να εκχωρήσουμε τις τιμές ενός αντικειμένου σε ένα άλλο χρησιμοποιώντας έναν τελεστή ανάθεσης (=). Σε αυτήν την περίπτωση, θα έχουμε μια δήλωση όπως s1 = s.
Η διαφορά μεταξύ του κατασκευαστή αντιγράφων και του χειριστή ανάθεσης είναι ότι ενώ ο κατασκευαστής αντιγράφων κατασκευάζει συνολικά ένα νέο αντικείμενο, ο χειριστής ανάθεσης απλώς εκχωρεί τις τιμές ενός μέλους του αντικειμένου στο RHS σε εκείνη του αντικειμένου στο LHS. Αυτό σημαίνει ότι τα αντικείμενα και στις δύο πλευρές ενός χειριστή ανάθεσης πρέπει να υπάρχουν πριν από την ανάθεση.
Καταστροφείς
Ένας καταστροφέας είναι επίσης μια ειδική λειτουργία όπως ένας κατασκευαστής, αλλά εφαρμόζει τη λειτουργικότητα που είναι ακριβώς αντίθετη από τον κατασκευαστή. Ενώ ο κατασκευαστής χρησιμοποιείται για τη δημιουργία ενός αντικειμένου, ένας καταστροφέας χρησιμοποιείται για την καταστροφή ή τη διαγραφή ενός αντικειμένου.
Μερικά από τα χαρακτηριστικά του καταστροφέα περιλαμβάνουν:
- Ένα όνομα καταστροφικού είναι το ίδιο με το όνομα της τάξης αλλά ξεκινά με ένα σύμβολο tilde (~).
- Το Destructor δεν έχει τύπο επιστροφής.
- Ο καταστροφέας δεν έχει επιχειρήματα.
- Μπορεί να υπάρχει μόνο ένας καταστροφέας σε μια τάξη.
- Ο μεταγλωττιστής δημιουργεί πάντα έναν προεπιλεγμένο καταστροφέα εάν δεν παρέχουμε έναν για μια τάξη.
Η γενική σύνταξη ενός καταστροφέα είναι:
~classname(){ //cleanup code }
Ο καταστροφέας μιας τάξης καλείται συνήθως στις ακόλουθες περιπτώσεις:
- Όταν το αντικείμενο βγαίνει εκτός του πεδίου, τότε ο καταστροφέας κλάσης καλείται αυτόματα.
- Ομοίως, ο καταστροφέας καλείται όταν το πρόγραμμα ολοκληρώσει την εκτέλεση. Αυτό σημαίνει ότι όλα τα αντικείμενα παύουν επίσης να υπάρχουν. Ως εκ τούτου, ο καταστροφέας κάθε αντικειμένου θα κληθεί.
- Ο καταστροφέας της κλάσης καλείται επίσης όταν εκτελείται ο τελεστής «διαγραφή» για τη διαγραφή ενός αντικειμένου.
- Μπορούμε επίσης να καλέσουμε τον καταστροφέα ρητά για να πραγματοποιήσουμε δραστηριότητες καθαρισμού αφού τελειώσουμε με τη λειτουργικότητα του αντικειμένου.
Το παρακάτω παράδειγμα δείχνει τη λειτουργία ενός καταστροφέα.
#include using namespace std; class sample{ public: sample(){ cout<<'Constructor::sample called'< Παραγωγή:
Κατασκευαστής :: ονομάζεται δείγμα
Αυτή είναι τάξη δείγματος
Destructor :: ~ κλήθηκε δείγμα
Το στιγμιότυπο οθόνης για την παραπάνω έξοδο δίνεται παρακάτω.

Έχουμε ορίσει ένα δείγμα τάξης στο οποίο έχουμε ορίσει έναν κατασκευαστή, έναν καταστροφέα και μια οθόνη λειτουργίας. Στην κύρια συνάρτηση, δημιουργούμε ένα αντικείμενο αντικειμένου δείγματος κλάσης και στη συνέχεια καλούμε τη λειτουργία εμφάνισης σε αυτό το αντικείμενο.
Μετά από αυτό, εκτελείται μια επιστροφή 0. Στην έξοδο, μπορούμε να δούμε ότι τη στιγμή που επιστρέφει η λειτουργία εμφάνισης και ο έλεγχος του προγράμματος φτάσει στην δήλωση 0, εκτελείται ο καταστροφέας. Αυτό σημαίνει ότι εκτελείται τη στιγμή που το αντικείμενο βγαίνει εκτός του πεδίου εφαρμογής.
«Αυτό» Δείκτης
Το C ++ χρησιμοποιεί μια ειδική ιδέα που σχετίζεται με τα αντικείμενα, η οποία είναι γνωστή ως 'αυτός' δείκτης. Ο δείκτης 'αυτό' δείχνει πάντα το τρέχον αντικείμενο. Έτσι, ανάλογα με την κατάσταση, όποτε πρέπει να αναφερθούμε στο τρέχον αντικείμενο, χρησιμοποιούμε το δείκτη «αυτό».
Γνωρίζουμε ότι κάθε φορά που δημιουργείται μια παρουσία της κλάσης, δηλαδή ένα αντικείμενο, δημιουργείται ένα ξεχωριστό αντίγραφο των μελών της κλάσης για το αντικείμενο. Αλλά όταν πρόκειται για τις λειτουργίες των μελών της τάξης, όλα τα αντικείμενα μοιράζονται το ίδιο αντίγραφο.
Όταν λοιπόν ένα ή περισσότερα αντικείμενα έχουν πρόσβαση στις λειτουργίες των μελών ταυτόχρονα, τότε πώς διασφαλίζουμε ότι τα κατάλληλα μέλη δεδομένων έχουν πρόσβαση και τροποποιούνται από τις λειτουργίες των μελών;
Αυτό είναι το μέρος όπου ο 'αυτός' δείκτης μπαίνει σε δράση. Ο μεταγλωττιστής περνά έναν σιωπηρό δείκτη με το όνομα της συνάρτησης ως 'αυτό'. Αυτό ονομάζεται δείκτης «αυτό».
Ο δείκτης 'αυτό' μεταφέρεται ως κρυφό όρισμα σε όλες τις κλήσεις συνάρτησης μέλους. Συνήθως είναι μια τοπική μεταβλητή. Ως εκ τούτου, 'αυτός' ο δείκτης είναι ένας σταθερός δείκτης και τα περιεχόμενά του είναι η διεύθυνση μνήμης του τρέχοντος αντικειμένου.
Σημειώστε ότι αυτός ο δείκτης είναι διαθέσιμος μόνο για μη στατικές συναρτήσεις μελών και όχι για στατικές λειτουργίες. Αυτό συμβαίνει επειδή οι στατικές λειτουργίες δεν χρειάζεται να έχουν πρόσβαση χρησιμοποιώντας ένα αντικείμενο. Μπορούν να έχουν άμεση πρόσβαση χρησιμοποιώντας το όνομα κλάσης.
Συνήθως χρησιμοποιούμε το δείκτη 'αυτό' σε καταστάσεις όπου οι μεταβλητές μελών και οι παράμετροι περνούν για να αρχικοποιήσουν τις μεταβλητές μελών που έχουν το ίδιο όνομα. Το χρησιμοποιούμε επίσης όταν πρέπει να επιστρέψουμε το τρέχον αντικείμενο από τη συνάρτηση.
Ας δούμε την επίδειξη του δείκτη «αυτό» παρακάτω.
#include using namespace std; class Sample { private: int num; char ch; public: Sample &setParam(int num, char ch){ this->num =num; this->ch = ch; return *this; } void printValues(){ cout<<'num = '< Παραγωγή:
αριθμός = 100
ch = Α
Στο παραπάνω πρόγραμμα, έχουμε μια τάξη που ονομάζεται Δείγμα, με τον αριθμό και τα δύο μέλη των δεδομένων. Έχουμε μια συνάρτηση μέλους setParam που περνά τις παραμέτρους με τα ίδια ονόματα, αριθμούς και ch για να ορίσουμε τις τιμές των μεταβλητών μέλους.
Μέσα στη συνάρτηση, εκχωρούμε αυτές τις τιμές στις τρέχουσες μεταβλητές μελών αντικειμένου που υποδεικνύονται από αυτόν τον δείκτη. Μόλις οριστούν οι τιμές, το τρέχον αντικείμενο 'αυτό' επιστρέφεται από τη συνάρτηση.
Στην κύρια συνάρτηση, δημιουργούμε πρώτα ένα αντικείμενο κλάσης δείγματος, obj και καλούμε μια συνάρτηση setParam για να ορίσουμε τις τιμές και στη συνέχεια καλούμε τη συνάρτηση printValues για να εκτυπώσουμε τις τιμές.
συμπέρασμα
Έχουμε μάθει τα βασικά δομικά στοιχεία του OOP στο C ++ σε αυτό το σεμινάριο. Η κατανόηση των τάξεων και των αντικειμένων είναι οι πρωταρχικές απαιτήσεις, αρχικά, OOP στο C ++. Έχουμε επίσης μάθει λεπτομερώς για τους κατασκευαστές και τους καταστροφείς με παραδείγματα.
c ++ cast char σε συμβολοσειρά
Στο επερχόμενο σεμινάριό μας, θα μάθουμε για τις λίστες αρχικοποιητών στο C ++.
=> Παρακολουθήστε την απλή σειρά εκπαίδευσης C ++ εδώ.
Συνιστώμενη ανάγνωση
- Έννοιες Python OOPs (Μαθήματα Python, Αντικείμενα και Κληρονομικότητα)
- Java Interface και Abstract Class Tutorial με παραδείγματα
- Εργασία με αντικείμενα VBScript Excel
- Tutorial QTP # 7 - Παράδειγμα αναγνώρισης αντικειμένων QTP - Πώς το QTP αναγνωρίζει μοναδικά αντικείμενα;
- Αντικείμενο αποθετηρίου στο QTP - Tutorial # 22
- Εργασία με αντικείμενα σύνδεσης VBScript ADODB
- Πολυμορφισμός χρόνου εκτέλεσης σε C ++
- Κληρονομικότητα σε C ++