static c
Σημασία και χρήση του στατικού σε C ++ με παραδείγματα.
Στα προηγούμενα θέματα σχετικά με τα μαθήματα αποθήκευσης, παρουσιάσαμε τη λέξη στατική. Μάθαμε για τις στατικές μεταβλητές που δηλώνονται σε ένα πρόγραμμα C ++. Γνωρίζουμε ότι οι στατικές μεταβλητές αρχικοποιούνται μόνο μία φορά και διατηρούν την τιμή σε όλο το πρόγραμμα.
Παρόμοια με τις στατικές μεταβλητές, σε αυτό το σεμινάριο, θα επεκτείνουμε τη χρήση μιας στατικής λέξης-κλειδιού σε:
- Στατικές μεταβλητές μελών σε μια τάξη
- Στατικά αντικείμενα κατηγορίας
- Κατηγορία στατικών μεθόδων
=> Δείτε τα εκπαιδευτικά σεμινάρια In-Depth C ++ εδώ.
διαφορά μεταξύ διακομιστή πελάτη και εφαρμογής που βασίζεται στον Ιστό
Τι θα μάθετε:
- Στατικές μεταβλητές μελών σε μια τάξη
- Στατικά αντικείμενα κλάσης
- Στατικές μέθοδοι σε τάξη
- Σκοπός των στατικών λειτουργιών
- συμπέρασμα
- Συνιστώμενη ανάγνωση
Στατικές μεταβλητές μελών σε μια τάξη
Μια στατική μεταβλητή δεν εκχωρείται ποτέ σε μια στοίβα. Εκχωρείται χώρος σε διαφορετική στατική αποθήκευση. Αυτό σημαίνει ότι όταν δηλώνουμε μια στατική μεταβλητή σε μια κλάση, αυτή η μεταβλητή κοινοποιείται από όλα τα αντικείμενα αυτής της κλάσης.
Καθώς οι στατικές μεταβλητές αρχικοποιούνται μόνο μία φορά και μοιράζονται όλα τα αντικείμενα μιας κλάσης, οι στατικές μεταβλητές δεν αρχικοποιούνται ποτέ από έναν κατασκευαστή. Αντ 'αυτού, η στατική μεταβλητή θα πρέπει να αρχικοποιείται ρητά εκτός της κλάσης μόνο μία φορά χρησιμοποιώντας τον τελεστή ανάλυσης εύρους (: :).
Όταν δημιουργείται το πρώτο αντικείμενο, όλα τα στατικά δεδομένα πρωτόγονου τύπου αρχικοποιούνται στο μηδέν όταν δεν υπάρχει άλλη αρχικοποίηση.
Ελέγξτε το ακόλουθο παράδειγμα που δείχνει τη στατική μεταβλητή σε μια κλάση.
Όπως φαίνεται στον παρακάτω κώδικα, έχουμε τη στατική μεταβλητή ως μέλος του δείγματος τάξης. Σημειώστε ότι έχουμε αρχικοποιήσει αυτήν τη μεταβλητή ρητά έξω από την τάξη με την αρχική τιμή = 0;
Στη συνέχεια, αυξάνουμε αυτήν τη στατική μεταβλητή στον κατασκευαστή της τάξης.
Ας δούμε ένα παράδειγμα προγράμματος.
#include #include using namespace std; class sample{ int var; static int count; public: sample(int var):var(var){ cout<<'Count = '< Παραγωγή:
Καταμέτρηση = 0
Καταμέτρηση = 1
Καταμέτρηση = 2
Στην κύρια λειτουργία, δημιουργούμε τρία διαφορετικά αντικείμενα. Στην έξοδο, βλέπουμε ότι η τιμή της στατικής μεταβλητής διατηρείται μεταξύ των δημιουργιών αντικειμένων και δεν επαναφέρεται με κάθε δημιουργία αντικειμένου. Αυτό για το πρώτο αντικείμενο, μετρήστε = 0. Στη συνέχεια, αυξάνεται στο 1. Για το επόμενο αντικείμενο, το πλήθος = 1 και ούτω καθεξής.
Εάν η μέτρηση ήταν οποιαδήποτε συνηθισμένη μεταβλητή, τότε η έξοδος θα ήταν:
Καταμέτρηση = 0
Καταμέτρηση = 0
Καταμέτρηση = 0
Στατικά αντικείμενα κλάσης
Ακριβώς όπως οι στατικές μεταβλητές μελών της κλάσης, μπορούμε να δηλώσουμε αντικείμενα κλάσης ως στατικά. Τα αντικείμενα στατικής τάξης αρχικοποιούνται μόνο μία φορά και παραμένουν ενεργά καθ 'όλη τη διάρκεια του προγράμματος. Καθώς το αντικείμενο είναι ένας καθορισμένος από τον χρήστη τύπος, ένα αντικείμενο στατικής κλάσης αρχικοποιείται παρόμοια με τα συνηθισμένα αντικείμενα χρησιμοποιώντας έναν κατασκευαστή.
Ας πάρουμε ένα παράδειγμα προγραμματισμού για να κατανοήσουμε καλύτερα τα αντικείμενα στατικής τάξης.
#include using namespace std; class xyz { int i; public: xyz() { i=0; cout << 'Constructor::xyz'<Σε αυτό το πρόγραμμα, έχουμε μια τάξη xyz με κατασκευαστή και καταστροφέα. Στην κύρια συνάρτηση, δηλώνουμε μια μεταβλητή x = 0; Αν το x είναι μηδέν, δημιουργούμε ένα στατικό αντικείμενο της κλάσης xyz.
Το πρόγραμμα δίνει την ακόλουθη έξοδο.
Παραγωγή:
Κατασκευαστής :: xyz
Τέλος κύριας
Καταστροφέας :: xyz
Κανονικά η έξοδος θα έπρεπε να ήταν
Κατασκευαστής :: xyz
Καταστροφέας :: xyz
Τέλος κύριας
Αλλά καθώς δημιουργούμε ένα στατικό αντικείμενο, αυτό το αντικείμενο έχει ένα πεδίο μέχρι το τέλος του προγράμματος και όχι όταν το αντικείμενο βγαίνει από το πεδίο (τέλος της δήλωσης if). Αυτός είναι ο λόγος για τον οποίο ο καταστροφέας αντικειμένου εκτελείται μόνο μετά την επίτευξη του τέλους της κύριας λειτουργίας.
Στατικές μέθοδοι σε τάξη
Μπορούμε επίσης να έχουμε στατικές μεθόδους σε μια τάξη. Ακριβώς όπως στατικά αντικείμενα και μεταβλητές στατικών μελών, οι συναρτήσεις στατικών μελών έχουν επίσης πεδίο έως ότου ολοκληρωθεί η εκτέλεση του προγράμματος.
Όταν μια μέθοδος κλάσης δηλώνεται στατική, μπορεί να έχει πρόσβαση μόνο στατικά μέλη, δηλαδή στατικές μεταβλητές και στατικές συναρτήσεις της κλάσης. Δεν μπορεί να έχει πρόσβαση σε συνηθισμένα μέλη της τάξης.
Επίσης, δεν υπάρχει διαθέσιμος «δείκτης» για μεθόδους στατικής τάξης.
Επιτρέπεται να χρησιμοποιήσουμε το αντικείμενο και τον τελεστή κουκίδων για πρόσβαση στις στατικές μεθόδους μιας κλάσης, αλλά συνιστάται να χρησιμοποιήσουμε το όνομα της κλάσης και τον τελεστή ανάλυσης εύρους για πρόσβαση σε αυτές τις μεθόδους.
Ακολουθεί ένα παράδειγμα χρήσης μιας στατικής μεθόδου σε μια τάξη.
Σε αυτό το παράδειγμα, ορίσαμε δύο μεταβλητές στατικών μελών Α και Β και μια στατική μέθοδο printValues. Οι μεταβλητές Α και Β αρχικοποιούνται στις τιμές 10 και 20 αντίστοιχα. Στη στατική μέθοδο printValues, οι τιμές των Α και Β υποβάλλονται μετά την αύξηση και την προαύξηση αντίστοιχα. Μετά από αυτό, εκτυπώνονται οι τιμές.
Στην κύρια μέθοδο, καλούμε απευθείας τη στατική μέθοδο printValues χρησιμοποιώντας το όνομα της κλάσης, καθώς δεν χρειαζόμαστε κανένα αντικείμενο για να επικαλεστούμε τις στατικές λειτουργίες.
#include using namespace std; class Sample { static int A; static int B; public: static void printValues(){ A++; ++B; cout <<'Value of A: ' << A << endl; cout <<'Value of B: ' << B << endl; } }; int Sample :: A =10; int Sample :: B =20; int main(){ Sample::printValues(); return 0; }
Παραγωγή:
Τιμή Α: 11
Τιμή Β: 21
Το στιγμιότυπο οθόνης της ίδιας εξόδου δίνεται παρακάτω.

Έτσι στην έξοδο, βλέπουμε ότι οι τιμές και των δύο στατικών μεταβλητών αλλάζουν ανάλογα με τις λειτουργίες που εκτελούνται σε αυτές.
Σκοπός των στατικών λειτουργιών
Έχοντας δει τις διάφορες χρήσεις της στατικής λέξεων-κλειδιών σε αυτό το σεμινάριο, παραμένει μια ερώτηση για το ποιος είναι ο σκοπός των στατικών συναρτήσεων.
Ο σκοπός των στατικών συναρτήσεων μπορεί να συνοψιστεί ως εξής:
- Χρησιμοποιούμε στατικές συναρτήσεις όταν αυτή η συνάρτηση δεν εξαρτάται από το αντικείμενο για επίκληση και εργασία.
- Ένας άλλος σκοπός της χρήσης στατικής λειτουργίας είναι ο περιορισμός της χρήσης του. Σε αντίθεση με τις καθολικές συναρτήσεις, η πρόσβαση σε στατικές συναρτήσεις περιορίζεται στο αρχείο στο οποίο τοποθετούνται. Έτσι, για να περιορίσουμε την πρόσβαση στη λειτουργία, το κάνουμε στατικό.
- Εκτός από τους παραπάνω δύο λόγους, χρησιμοποιούμε στατικές συναρτήσεις όταν δεν θέλουμε να δημιουργήσουμε ένα αντικείμενο μιας κλάσης μόνο για να εκτελέσουμε μια συνάρτηση που δεν αναφέρεται σε κανένα μέλος της τάξης.
συμπέρασμα
Για να ολοκληρώσουμε αυτό το θέμα, μπορούμε να πούμε ότι η στατική λέξη-κλειδί στο C ++ μπορεί να χρησιμοποιηθεί με διάφορους τρόπους για να δηλώσει μεταβλητές, μεταβλητές μέλους, αντικείμενα κλάσης, μεθόδους κ.λπ.
Οι στατικές λειτουργίες των μελών και οι μεταβλητές δεν χρειάζεται να έχουν πρόσβαση στο αντικείμενο, αλλά μπορούν να έχουν άμεση πρόσβαση χρησιμοποιώντας το όνομα της τάξης. Επίσης, το πεδίο των στατικών οντοτήτων παραμένει καθ 'όλη τη διάρκεια της εκτέλεσης του προγράμματος. Ως εκ τούτου, η στατική λέξη-κλειδί μπορεί επίσης να χρησιμοποιηθεί για τον έλεγχο της πρόσβασης μιας συγκεκριμένης οντότητας.
Στα επερχόμενα σεμινάρια μας, θα μάθουμε περισσότερα για πολλά άλλα θέματα OOP στο C ++.
=> Δείτε εδώ για να δείτε τα εκπαιδευτικά σεμινάρια A-Z Of C ++.
Συνιστώμενη ανάγνωση
- Χλευάσουμε ιδιωτικές, στατικές και άκυρες μεθόδους χρησιμοποιώντας το Mockito
- Στατικές δοκιμές και δυναμικές δοκιμές - διαφορά μεταξύ αυτών των δύο σημαντικών τεχνικών δοκιμών
- TOP 40 Εργαλεία ανάλυσης στατικών κωδικών (Εργαλεία ανάλυσης καλύτερων πηγών κώδικα)
- Καλύτερη δωρεάν σειρά C # Tutorial: Ο απόλυτος οδηγός C # για αρχάριους
- Παραμετροποίηση στατικών τιμών στο LoadRunner
- Μεταβλητές Python
- Τύποι κληρονομικότητας σε C ++
- Μεταβλητές σε C ++