static c
Importanza e uso di statico in C ++ con esempi.
Nei nostri argomenti precedenti sulle classi di archiviazione, è stata introdotta la parola statica. Abbiamo imparato a conoscere le variabili statiche dichiarate in un programma C ++. Sappiamo che le variabili statiche vengono inizializzate una sola volta e mantengono il valore in tutto il programma.
Analogamente alle variabili statiche, in questo tutorial estenderemo l'uso di una parola chiave statica a:
- Variabili membro statiche in una classe
- Oggetti di classe statica
- Classe metodi statici
=> Controlla qui i tutorial di formazione approfonditi su C ++.
Cosa imparerai:
- Variabili membro statiche in una classe
- Oggetti di classe statica
- Metodi statici in una classe
- Scopo delle funzioni statiche
- Conclusione
- Lettura consigliata
Variabili membro statiche in una classe
Una variabile statica non viene mai allocata in uno stack. Viene assegnato spazio su una memoria statica diversa. Ciò significa che quando dichiariamo una variabile statica in una classe, questa variabile è condivisa da tutti gli oggetti di quella classe.
Poiché le variabili statiche vengono inizializzate solo una volta e sono condivise da tutti gli oggetti di una classe, le variabili statiche non vengono mai inizializzate da un costruttore. Invece, la variabile statica dovrebbe essere inizializzata esplicitamente all'esterno della classe solo una volta utilizzando l'operatore di risoluzione dell'ambito (: :).
come utilizzare il comando diff per confrontare due file
Quando viene creato il primo oggetto, tutti i dati statici di tipo primitivo vengono inizializzati a zero quando non sono presenti altre inizializzazioni.
Controlla il seguente esempio che mostra la variabile statica in una classe.
Come mostrato nel codice seguente, abbiamo la variabile statica count come membro dell'esempio di classe. Nota che abbiamo inizializzato questa variabile esplicitamente al di fuori della classe con il valore iniziale = 0;
Quindi incrementiamo questa variabile statica nel costruttore della classe.
Diamo un'occhiata a un programma di esempio.
#include #include using namespace std; class sample{ int var; static int count; public: sample(int var):var(var){ cout<<'Count = '< Produzione:
Conteggio = 0
Conteggio = 1
Conteggio = 2
Nella funzione principale creiamo tre diversi oggetti. Nell'output, vediamo che il valore della variabile statica viene mantenuto tra le creazioni dell'oggetto e non viene ripristinato ad ogni creazione dell'oggetto. Questo per il primo oggetto, count = 0. Quindi viene incrementato a 1. Per l'oggetto successivo il count = 1 e così via.
Se il conteggio fosse una variabile ordinaria, l'output sarebbe stato:
Conteggio = 0
Conteggio = 0
Conteggio = 0
Oggetti di classe statica
Proprio come le variabili membro statiche della classe, possiamo dichiarare gli oggetti della classe come statici. Anche gli oggetti di classe statica vengono inizializzati una sola volta e rimangono attivi in tutto il programma. Poiché l'oggetto è un tipo definito dall'utente, un oggetto di classe statica viene inizializzato in modo simile agli oggetti ordinari utilizzando un costruttore.
Prendiamo un esempio di programmazione per comprendere meglio gli oggetti di classe statica.
#include using namespace std; class xyz { int i; public: xyz() { i=0; cout << 'Constructor::xyz'<In questo programma, abbiamo una classe xyz con un costruttore e un distruttore. Nella funzione main dichiariamo una variabile x = 0; Se x è uguale a zero, creiamo un oggetto statico di classe xyz.
Il programma fornisce il seguente output.
Produzione:
Costruttore :: xyz
Fine principale
Distruttore :: xyz
Normalmente l'output avrebbe dovuto essere
Costruttore :: xyz
Distruttore :: xyz
Fine principale
Ma mentre creiamo un oggetto statico, questo oggetto ha uno scope fino alla fine del programma e non quando l'oggetto esce dallo scope (fine dell'istruzione if). Questo è il motivo per cui il distruttore per object obj viene eseguito solo dopo che viene raggiunta la fine della funzione main.
miglior downloader gratuito da youtube a mp3
Metodi statici in una classe
Possiamo anche avere metodi statici in una classe. Proprio come gli oggetti statici e le variabili membro statiche, anche le funzioni membro statiche hanno ambito fino al termine dell'esecuzione del programma.
Quando un metodo di classe viene dichiarato statico, può accedere solo ai membri statici, ad esempio variabili statiche e funzioni statiche della classe. Non può accedere ai membri ordinari della classe.
Inoltre, non è disponibile alcun puntatore 'this' per i metodi delle classi statiche.
Scarica musica mp3 app gratuita per Android
Siamo autorizzati a utilizzare l'oggetto e l'operatore punto per accedere ai metodi statici di una classe, ma si consiglia di utilizzare il nome della classe e l'operatore di risoluzione dell'ambito per accedere a questi metodi.
Di seguito è riportato un esempio di utilizzo di un metodo statico in una classe.
In questo esempio, abbiamo definito due variabili membro statiche A e B e un metodo statico printValues. Le variabili A e B vengono inizializzate rispettivamente ai valori 10 e 20. Nel metodo statico printValues, i valori di A e B vengono sottoposti rispettivamente a post Increment e pre Increment. Successivamente, i valori vengono stampati.
Nel metodo principale, chiamiamo direttamente il metodo statico printValues usando il nome della classe poiché non abbiamo bisogno di alcun oggetto per richiamare le funzioni statiche.
#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; }
Produzione:
Valore di A: 11
Valore di B: 21
Lo screenshot dello stesso output è fornito di seguito.

Quindi nell'output, vediamo che i valori di entrambe le variabili statiche vengono modificati in base alle operazioni eseguite su di esse.
Scopo delle funzioni statiche
Dopo aver visto i vari usi della parola chiave static in questo tutorial, rimane una domanda su quale sia lo scopo delle funzioni statiche.
Lo scopo delle funzioni statiche può essere riassunto come segue:
- Usiamo funzioni statiche quando quella funzione non dipende dall'oggetto per essere richiamata e funzionante.
- Ancora un altro scopo dell'utilizzo della funzione statica è limitarne l'uso. A differenza delle funzioni globali, l'accesso alle funzioni statiche è limitato al file in cui sono inserite. Pertanto, per limitare l'accesso alla funzione, lo rendiamo statico.
- A parte i due motivi precedenti, usiamo funzioni statiche quando non vogliamo creare un oggetto di una classe solo per eseguire una funzione che non si riferisce a nessun membro della classe.
Conclusione
Per concludere questo argomento, possiamo dire che la parola chiave statica in C ++ può essere utilizzata in vari modi per dichiarare variabili, variabili membro, oggetti classe, metodi, ecc.
Non è necessario accedere alle variabili e alle funzioni membro statiche con l'oggetto, ma è possibile accedervi direttamente utilizzando il nome della classe. Inoltre, l'ambito delle entità statiche rimane per tutta l'esecuzione del programma. Quindi la parola chiave statica può essere utilizzata anche per controllare l'accesso di una particolare entità.
Nei nostri prossimi tutorial, impareremo di più su molti altri argomenti OOP in C ++.
=> Controlla qui per vedere i tutorial di formazione dalla A alla Z di C ++ qui.
Lettura consigliata
- Mocking metodi privati, statici e nulli utilizzando Mockito
- Test statici e test dinamici - Differenza tra queste due importanti tecniche di test
- TOP 40 strumenti di analisi del codice statico (migliori strumenti di analisi del codice sorgente)
- Miglior serie di tutorial GRATUITI per C #: la guida definitiva a C # per principianti
- Parametrizzazione dei valori statici in LoadRunner
- Variabili Python
- Tipi di ereditarietà in C ++
- Variabili in C ++