Variabile statica C ++

Variabile statica C ++
“Static è una parola chiave o un modificatore in C ++ che si riferisce a un tipo, non a un'istanza. Pertanto, l'accesso ai membri statici non richiede un'istanza. Campi, metodi, costruttori, classi, proprietà, operatori ed eventi possono essere tutti statici in C++. Salva la memoria perché non abbiamo più bisogno di creare un'istanza per accedere ai membri statici. Inoltre, poiché è un membro del tipo, un'istanza non verrà creata ogni volta che viene utilizzata la memoria. In questo articolo sono presentati diversi esempi dei vari modi per usare statico in C ++. I metodi per l'utilizzo statico in C ++ sono dettagliati qui. Mostrano come funzionano i vari metodi e come possono essere impiegati in vari modi."

Esempio 1

Dai un'occhiata a questa prima istanza di una variabile statica in C++.

#includere
#includere
Utilizzo dello spazio dei nomi std;
void my_demo ()

static int count_val = 0;
cout<count_val ++;

int main ()

per (int i = 0; i<4; i++)
My_demo ();
restituzione 0;

All'interno della funzione "My_demo", abbiamo creato la variabile statica "Count_val" utilizzando la parola chiave statica e impostandola con il valore zero. Successivamente, il conte_val viene incrementato per la prossima chiamata di funzione. Quindi, abbiamo la funzione principale in cui abbiamo un ciclo per iterazione e invociamo la funzione "my_demo".

Il risultato dello script variabile statico sopra è il seguente:

Esempio 2

Le variabili statiche in una classe sono accessibili dagli oggetti poiché viene assegnato lo spazio in una memoria statica separata, il che significa che le variabili contrassegnate come statiche sono inizializzate una sola volta. Le stesse variabili statiche non possono essere utilizzate più di una volta per oggetti diversi. Inoltre, a causa di ciò, i costruttori non possono inizializzare le variabili statiche. Di conseguenza, l'utente ha bisogno di inizializzare manualmente le variabili statiche all'interno delle classi utilizzando il nome della classe e l'operatore di risoluzione dell'ambito oltre la classe, come illustrato di seguito:

#includere
Utilizzo dello spazio dei nomi std;
Classe Myclass

pubblico:
statico int x;
La mia classe()

// corpo vuoto
;
;
int myclass :: x = 2;
int main ()

Myclassobj;
cout<

Abbiamo stabilito una classe, "myclass", che è mantenuta pubblica. Quindi, abbiamo definito una variabile statica "X". Quindi, abbiamo creato il costruttore della classe "Myclass", che non fa nulla a causa del suo corpo vuoto. Al di fuori della classe, abbiamo esplicitamente inizializzato la variabile statica "X" con la risoluzione dell'ambito "::". Quindi, all'interno del main int, abbiamo dichiarato l'oggetto "obj" invocando la "myclass" e stampando il suo valore.

Di seguito viene visualizzato il valore della variabile statica x impostata nello script sopra.

Esempio 3

Come puoi vedere dal programma sopra, abbiamo fatto uno sforzo per realizzare diversi duplicati della variabile statica per vari oggetti. Ma questo non ha avuto luogo.

#includere
Utilizzo dello spazio dei nomi std;
Classe myclass2

int a;
pubblico:
Myclass2 ()

a = 0;
cout<< " Constructor Body\n";

~ Myclass2 ()

cout<< "Destructor Body\n";

;
int main ()

int b = 0;
if (b == 0)

Myclass2 obj;

cout<< "Main Terminated\n";

Abbiamo stabilito una classe, "myclass2" e ha dichiarato un oggetto come "a". Quindi, abbiamo definito il costruttore di "Myclass2", che inizializza l'oggetto "A" con il valore zero. Inoltre, coprirà l'affermazione "corpo costruttore". Inoltre, abbiamo costruito il distruttore della classe "Myclass2", che stampare solo l'affermazione "Destructor Body". Successivamente, abbiamo creato la funzione principale INT, che definisce e inizializza un altro oggetto come "B" impostata come zero. Inoltre, abbiamo un'istruzione IF che ha la condizione che l'oggetto "B" sia uguale al valore zero e quindi definisce l'oggetto Myclass2 del costruttore come "OBJ". Alla fine, abbiamo chiamato il comando cout, che stamperà il messaggio del principale terminato.

Il seguente risultato è stampato sul prompt.

Esempio 4

L'oggetto è designato come non statico nel blocco IF di quanto sopra menzionato. Pertanto, l'ambito della variabile è limitato al blocco IF. Di conseguenza, il costruttore di funzioni viene chiamato quando viene creato un oggetto e il distruttore viene chiamato non appena il controllo If Block non è più in vigore perché l'ambito di un oggetto è limitato al blocco IF, dove viene dichiarato. Ora esaminiamo come cambierà l'output se dichiariamo l'oggetto statico.

#includere
Utilizzo dello spazio dei nomi std;
Classe myclass3

int x = 0;
pubblico:
Myclass3 ()

x = 0;
cout<< "Constructor Section\n";

~ Myclass3 ()

cout<< "Destructor Section\n";

;
int main ()

int y = 0;
if (y == 0)

statico myclass3 obj;

cout<< "Main Ended\n";


Abbiamo creato la classe "myclas3" come nel programma sopra. Quindi, abbiamo definito la variabile X e abbiamo assegnato un valore zero. Il costruttore e il distruttore sono anche stabiliti all'interno della classe "Myclass3". All'interno della dichiarazione principale, se condizionale, abbiamo dichiarato l'oggetto statico di "myclass3".

Il cambiamento nelle prestazioni è ovvio. Poiché il distruttore viene chiamato nella successiva schermata pronta dopo il principale, ciò è avvenuto a seguito della durata della vita del programma coperta da oggetti statici.

Esempio 5

L'esistenza di funzioni di membro statico all'interno di una classe è indipendente da qualsiasi oggetto di classe, proprio come quello dei membri dei dati statici o delle variabili statiche. Contrariamente ai membri dei dati non statici della classe e alle funzioni dei membri, le funzioni dei membri statiche sono consentite solo l'accesso ad altre funzioni dei membri statici o altri membri di dati statici.

#includere
Utilizzo dello spazio dei nomi std;
Classe New_Class

pubblico:
statico vuoto display_msg ()

cout<<"Welcome to my portal";

;
int main ()

New_class :: display_msg ();

La classe "new_class" ha un modificatore pubblico che definisce la funzione del membro void statico come "display_msg". All'interno di quella funzione membro "Display_MSG" statica, abbiamo stampato l'istruzione Cout. Al di fuori del "New_Class", abbiamo il metodo principale del programma in cui abbiamo invocato la funzione del membro statico "Display_MSG".

L'output stampa il messaggio all'interno della funzione membro statico "Display_MSG" come segue:

Conclusione

La nostra comprensione dell'idea statica in C ++ può essere basata sull'articolo sopra menzionato. Nell'area di stoccaggio statico, gli articoli statici sono sempre sempre assegnati una volta durante un programma. Inoltre, sono validi per l'intero periodo del programma. Questa guida discute le varie tecniche di utilizzo statico insieme agli esempi di lavoro. L'uso dei concetti in base alle esigenze del programmatore sarà più semplice con l'aiuto degli esempi.