Ποια είναι η διαφορά μεταξύ της στατικής και της κανονικής μεταβλητής στη C ++;


Απάντηση 1:

Η στατική είναι μία από αυτές τις λέξεις-κλειδιά που έχουν ένα εκατομμύριο σημασίες στην C ++.

Από την κορυφή του κεφαλιού μου (πιθανώς όχι εξαντλητική):

  • Μια στατική μεταβλητή που ορίζεται σε μια συνάρτηση είναι διαθέσιμη μόνο στη λειτουργία, αλλά διατηρείται σε όλες τις κλήσεις λειτουργίας. Έτσι, εάν αρχικοποιήσετε μια στατική μεταβλητή στο 0 και η λειτουργία αυξάνει, η δεύτερη κλήση θα έχει τιμή 1 και ούτω καθεξής. Μια κανονική μεταβλητή θα επανενεργοποιηθεί κάθε φορά που ονομάζεται η συνάρτηση (και η αποθήκευση για τη μεταβλητή απομετράται όταν εξέρχεται η συνάρτηση). Μια στατική μεταβλητή μέλους μιας κλάσης μοιράζεται μεταξύ των στιγμιότυπων της κλάσης. Με άλλα λόγια, δεν ανήκει σε καμία περίπτωση. Κάθε αλλαγή που θα γίνει θα είναι ορατή σε όλες τις εμφανίσεις της κλάσης (και αν έχετε λειτουργίες στατικών μελών, μπορείτε να έχετε πρόσβαση σε αυτές τις μεταβλητές χωρίς να έχετε παρά μια παρουσία της κλάσης). Οι κανονικές μεταβλητές ζουν και πεθαίνουν με την περίπτωση και κάθε παράθεση έχει το δικό της ανεξάρτητο αντίγραφο. Μια παγκόσμια στατική μεταβλητή είναι ακριβώς όπως μια κανονική παγκόσμια μεταβλητή, εκτός από την εσωτερική σύνδεση, που σημαίνει ότι είναι διαθέσιμη μόνο στην ίδια μονάδα μετάφρασης (~ = αρχείο ), επομένως δεν μπορείτε να έχετε πρόσβαση σε αυτό από άλλο αρχείο. Μια κανονική παγκόσμια μεταβλητή είναι προσβάσιμη από άλλα αρχεία.

Απάντηση 2:

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

Έτσι, αν ορίσετε μια τάξη ως εξής:

αντικείμενο κατηγορίας {
δημόσιο:
int x;
static int y;
},

αντικείμενο a, b;
a = νέο αντικείμενο ();
b = νέο αντικείμενο ();
b.y = 0;
a.y = 1;
αν (a.y == b.y)
{
cout << "Αυτό είναι το πώς η στατική μεταβλητή εργασία" << endl;
}}

Αυτό δεν είναι το ίδιο με τη μεταβλητή "const" που δεν μπορεί να αλλάξει.

Ελπίζω ότι βοηθάει. Καλή τύχη.


Απάντηση 3:

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

Έτσι, αν ορίσετε μια τάξη ως εξής:

αντικείμενο κατηγορίας {
δημόσιο:
int x;
static int y;
},

αντικείμενο a, b;
a = νέο αντικείμενο ();
b = νέο αντικείμενο ();
b.y = 0;
a.y = 1;
αν (a.y == b.y)
{
cout << "Αυτό είναι το πώς η στατική μεταβλητή εργασία" << endl;
}}

Αυτό δεν είναι το ίδιο με τη μεταβλητή "const" που δεν μπορεί να αλλάξει.

Ελπίζω ότι βοηθάει. Καλή τύχη.