Συνιστάται, 2024

Επιλογή Συντάκτη

Διαφορά μεταξύ δομής και κλάσης

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

Συγκριτικό διάγραμμα

Βάση σύγκρισηςΔομήΤάξη
ΒασικόςΕάν ο προσδιοριστής πρόσβασης δεν δηλωθεί, από προεπιλογή όλα τα μέλη είναι «δημόσια».Εάν ο προσδιοριστής πρόσβασης δεν δηλωθεί, από προεπιλογή όλα τα μέλη είναι «ιδιωτικά».
Δήλωσηstruct όνομα_ταρίσματος {
πληκτρολογήστε struct_element 1;
type struct_element 2;
type struct_element 3;
.
.
.
},
class class_name {
μέλος δεδομένων.
μέλος;
},
ΠαράδειγμαΗ περίπτωση της «δομής» ονομάζεται «μεταβλητή δομής».Η περίπτωση μιας 'τάξης' ονομάζεται 'αντικείμενο'.

Ορισμός δομής

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

 struct sname {type struct_element1; πληκτρολογήστε struct_element2; πληκτρολογήστε struct_element3; . . . } μεταβλητή1, μεταβλητή2, . . . 

Η λέξη-κλειδί 'struct' ορίζει στον μεταγλωττιστή ότι δηλώνεται μια δομή. Το 'sname' αντιπροσωπεύει το όνομα που δίνεται στη δομή. Η δήλωση της δομής διακόπτεται πάντα με ερωτηματικό, καθώς θεωρείται ως δήλωση. Μπορείτε να δηλώσετε τις εμφανίσεις της δομής πριν από τον τερματισμό της, όπως έγινε στον παραπάνω κώδικα (variable1, variable2) ή μπορείτε να δηλώσετε την εμφάνιση της δομής στο main (), γράφοντας το όνομα της παρουσίας που προηγείται με το όνομα της δομής.

 // παράδειγμα. main () {sname S1, S2; }} 

Εδώ S1 και S2 είναι οι περιπτώσεις της δομής. Οι περιπτώσεις της δομής ονομάζονται "μεταβλητή δομής". Το στοιχείο που δηλώνεται μέσα στο σώμα της δομής μπορεί να προσεγγιστεί μέσω των μεταβλητών της δομής μέσω της χρήσης του τελεστή dot (.).

 // παράδειγμα S1. struct_element1; 
  • Μπορεί επίσης να δημιουργηθεί η συστοιχία δομής, γι 'αυτό πρέπει πρώτα να δηλώσετε μια δομή και, στη συνέχεια, να δηλώσετε μια διάταξη αυτού του τύπου.
 // sample struct sname sarray [10]; 

Η παραπάνω πρόταση δημιουργεί έναν πίνακα με το όνομα 'sarray' που περιέχει δέκα μεταβλητές και κάθε μεταβλητή οργανώνεται όπως ορίζεται στο 'sname'.

  • Μπορείτε να περάσετε ένα μέλος δομής σε μια λειτουργία και μπορείτε να περάσετε μια ολόκληρη δομή σε μια λειτουργία.
  • Όπως και δείκτης ακέραιου δείκτη, δείκτης δομής μπορεί επίσης να δηλωθεί τοποθετώντας το '*' στο μπροστινό μέρος του ονόματος μεταβλητών δομής.
 // sample struct sname * S1; 

Σημείωση:

Τα στοιχεία της δομής αποθηκεύονται σε μια συνεχή τοποθεσία μνήμης.

Ορισμός της κλάσης

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

 class class_name {μέλη ιδιωτικών δεδομένων και λειτουργίες μελών. access_specifier type data_member; πληκτρολογήστε mem_funct (λίστα παραμέτρων) {. . }} λίστα αντικειμένων. 

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

Τα αντικείμενα δεν είναι παρά η παρουσία των τάξεων. Τα μέλη της κλάσης έχουν πρόσβαση στο αντικείμενο της ίδιας κλάσης χρησιμοποιώντας έναν τελεστή (.).

 //object.mem_funct (επιχειρήματα); 
  • Το αντικείμενο μπορεί επίσης να μεταβιβαστεί ως επιχείρημα σε μια λειτουργία.
  • Ο δείκτης σε ένα αντικείμενο μπορεί επίσης να δημιουργηθεί.

Βασικές διαφορές μεταξύ δομής και κλάσης

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

Ομοιότητες:

  • Στην C ++ τόσο η δομή όσο και η κλάση είναι συντακτικά ισοδύναμες.
  • Και η δομή και η τάξη μπορούν να δηλώσουν μερικά από τα μέλη τους ιδιωτικά.
  • Το όνομα μιας δομής ή μιας κλάσης μπορεί να χρησιμοποιηθεί ως ανεξάρτητος τύπος.
  • Και η δομή και η τάξη υποστηρίζουν τον μηχανισμό κληρονομικότητας.

Συμπέρασμα:

Η δομή στο C είχε κάποιους περιορισμούς, καθώς η δομή δεν επιτρέπει την απόκρυψη δεδομένων, ο τύπος δεδομένων «struct» δεν μπορεί να αντιμετωπιστεί όπως οι ενσωματωμένοι τύποι, οι δομές δεν υποστηρίζουν την κληρονομιά. Η δομή στην C ++ ξεπέρασε αυτούς τους περιορισμούς. Στην C ++, οι κλάσεις είναι η εκτεταμένη έκδοση της δομής. Ο προγραμματιστής θεωρεί ότι είναι εύκολο να χρησιμοποιήσετε την κλάση για να διατηρήσετε δεδομένα και να λειτουργήσετε και τα δύο και να δομήσετε μόνο για να κρατήσετε δεδομένα.

Top