static c
Importanța și utilizarea staticii în C ++ cu exemple.
În subiectele noastre anterioare despre clasele de stocare, ni s-a prezentat cuvântul static. Am aflat despre variabilele statice care sunt declarate într-un program C ++. Știm că variabilele statice sunt inițializate o singură dată și păstrează valoarea pe tot parcursul programului.
Similar cu variabilele statice, în acest tutorial, vom extinde utilizarea unui cuvânt cheie static la:
- Variabile de membru static într-o clasă
- Obiecte de clasă statică
- Clasa metodelor statice
=> Consultați aici tutorialele de instruire în profunzime C ++.
tehnici de eliberare a cerințelor în ingineria software
Ce veți învăța:
- Variabile de membru static dintr-o clasă
- Obiecte de clasă statică
- Metode statice într-o clasă
- Scopul funcțiilor statice
- Concluzie
- Lectură recomandată
Variabile de membru static dintr-o clasă
O variabilă statică nu este alocată niciodată pe o stivă. Ele sunt alocate spațiu pe diferite stocări statice. Aceasta înseamnă că atunci când declarăm o variabilă statică într-o clasă, această variabilă este partajată de toate obiectele acelei clase.
Deoarece variabilele statice sunt inițializate o singură dată și sunt partajate de toate obiectele unei clase, variabilele statice nu sunt inițializate niciodată de un constructor. În schimb, variabila statică ar trebui inițiată în mod explicit în afara clasei doar o dată folosind operatorul de rezoluție a scopului (: :).
Când este creat primul obiect, toate datele statice de tip primitiv sunt inițializate la zero atunci când nu există altă inițializare.
Verificați următorul exemplu care demonstrează variabila statică dintr-o clasă.
Așa cum se arată în codul de mai jos, avem numărul variabilelor statice ca membru al eșantionului clasei. Rețineți că am inițializat această variabilă în mod explicit în afara clasei cu valoarea inițială = 0;
Apoi, incrementăm această variabilă statică în constructorul clasei.
Să ne uităm la un exemplu de program.
#include #include using namespace std; class sample{ int var; static int count; public: sample(int var):var(var){ cout<<'Count = '< Ieșire:
Număr = 0
Număr = 1
Număr = 2
În funcția principală, creăm trei obiecte diferite. În rezultat, vedem că valoarea variabilei statice este menținută între creațiile obiectului și nu se resetează la fiecare creație a obiectului. Aceasta pentru primul obiect, numărare = 0. Apoi este mărită la 1. Pentru următorul obiect numărare = 1 și așa mai departe.
Dacă numărul ar fi o variabilă obișnuită, atunci rezultatul ar fi fost:
întrebările și răspunsurile mele la interviu sql
Număr = 0
Număr = 0
Număr = 0
Obiecte de clasă statică
La fel ca variabilele membre statice ale clasei, putem declara obiectele clasei ca fiind statice. Obiectele clasei statice sunt, de asemenea, inițializate o singură dată și rămân active pe tot parcursul programului. Deoarece obiectul este un tip definit de utilizator, un obiect de clasă static este inițializat în mod similar cu obiectele obișnuite folosind un constructor.
Să luăm un exemplu de programare pentru a înțelege mai bine obiectele de clasă statică.
#include using namespace std; class xyz { int i; public: xyz() { i=0; cout << 'Constructor::xyz'<În acest program, avem o clasă xyz cu un constructor și un destructor. În funcția principală, declarăm o variabilă x = 0; Dacă x este egal cu zero, vom crea un obiect static din clasa xyz.
Programul oferă următoarea ieșire.
Ieșire:
Constructor :: xyz
Sfârșitul principal
Destructor :: xyz
În mod normal, ieșirea ar fi trebuit să fie
Constructor :: xyz
Destructor :: xyz
Sfârșitul principal
Dar pe măsură ce creăm un obiect static, acest obiect are un domeniu de aplicare până la sfârșitul programului și nu când obiectul iese din domeniul de aplicare (sfârșitul instrucțiunii if). Acesta este motivul pentru care destructorul pentru obiect obiect se execută numai după ce se ajunge la sfârșitul funcției principale.
Metode statice într-o clasă
Putem avea și metode statice într-o clasă. La fel ca obiectele statice și variabilele de membru static, funcțiile de membru static au și domeniu de aplicare până la finalizarea executării programului.
Când o metodă de clasă este declarată statică, aceasta poate accesa numai membrii statici, adică variabile statice și funcțiile statice ale clasei. Nu poate accesa membrii obișnuiți ai clasei.
De asemenea, nu există un pointer „acesta” disponibil pentru metodele de clasă statică.
analist de afaceri interviu întrebări și răspuns
Ni se permite să folosim obiectul și operatorul punct pentru a accesa metodele statice ale unei clase, dar este recomandat să folosim numele clasei și operatorul de rezoluție a domeniului pentru a accesa aceste metode.
Mai jos este un exemplu de utilizare a unei metode statice într-o clasă.
În acest exemplu, am definit două variabile statice membre A și B și o metodă statică printValues. Variabilele A și B sunt inițializate la valorile 10 și respectiv 20. În metoda statică printValues, valorile lui A și B sunt supuse post Increment și respectiv pre Increment. După aceea, valorile sunt tipărite.
În metoda principală, numim direct metoda statică printValues folosind numele clasei, deoarece nu avem nevoie de niciun obiect pentru a invoca funcțiile statice.
#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; }
Ieșire:
Valoarea lui A: 11
Valoarea lui B: 21
Captura de ecran a aceleiași ieșiri este dată mai jos.
Deci, în rezultat, vedem că valorile ambelor variabile statice sunt modificate conform operațiunilor efectuate pe ele.
Scopul funcțiilor statice
După ce am văzut diferitele utilizări ale cuvintelor cheie statice în acest tutorial, rămâne o întrebare cu privire la care este scopul funcțiilor statice.
Scopul funcțiilor statice poate fi rezumat după cum urmează:
- Folosim funcții statice atunci când acea funcție nu depinde de obiect pentru invocare și lucru.
- Un alt scop al utilizării funcției statice este de a limita utilizarea acesteia. Spre deosebire de funcțiile globale, accesul la funcțiile statice este limitat la fișierul în care sunt plasate. Astfel, pentru a limita accesul la funcție, îl facem static.
- În afară de cele două motive de mai sus, folosim funcții statice atunci când nu dorim să creăm un obiect al unei clase doar pentru a executa o funcție care nu se referă la niciun membru al clasei.
Concluzie
Pentru a încheia acest subiect, putem spune că cuvântul cheie static în C ++ poate fi utilizat în diferite moduri pentru a declara variabile, variabile membre, obiecte de clasă, metode etc.
Funcțiile și variabilele statice ale membrilor nu trebuie să fie accesate cu obiectul, ci mai degrabă pot fi accesate direct folosind numele clasei. De asemenea, scopul entităților statice rămâne pe tot parcursul executării programului. Prin urmare, cuvântul cheie static poate fi, de asemenea, utilizat pentru a controla accesul unei anumite entități.
În tutorialele noastre viitoare, vom afla mai multe despre alte câteva subiecte OOP în C ++.
=> Verificați aici pentru a vedea A-Z a tutorialelor de formare C ++ aici.
Lectură recomandată
- Batjocorind metode private, statice și vid folosind Mockito
- Testare statică și testare dinamică - Diferența dintre aceste două tehnici importante de testare
- TOP 40 Instrumente de analiză a codului static (Cele mai bune instrumente de analiză a codului sursă)
- Cea mai bună serie de tutoriale GRATUITE C #: Ghidul final C # pentru începători
- Parametrizarea valorilor statice în LoadRunner
- Variabile Python
- Tipuri de moștenire în C ++
- Variabile în C ++