static c
Importància i ús de l’estàtica en C ++ amb exemples.
En els nostres temes anteriors sobre classes d'emmagatzematge, se'ns va introduir la paraula estàtic. Hem après sobre les variables estàtiques que es declaren en un programa C ++. Sabem que les variables estàtiques només s’inicialitzen una vegada i conserven el valor a tot el programa.
De manera similar a les variables estàtiques, en aquest tutorial ampliarem l’ús d’una paraula clau estàtica a:
- Variables de membres estàtics en una classe
- Objectes de classe estàtica
- Classe de mètodes estàtics
=> Consulteu aquí els tutorials de formació en profunditat de C ++.
Què aprendreu:
- Variables de membre estàtiques d'una classe
- Objectes de classe estàtica
- Mètodes estàtics en una classe
- Finalitat de les funcions estàtiques
- Conclusió
- Lectura recomanada
Variables de membre estàtiques d'una classe
Una variable estàtica no s’assigna mai a una pila. Se'ls assigna espai en diferents emmagatzematges estàtics. Això vol dir que quan declarem una variable estàtica en una classe, aquesta variable és compartida per tots els objectes d’aquesta classe.
Com que les variables estàtiques només s'inicialitzen una vegada i són compartides per tots els objectes d'una classe, les variables estàtiques mai no són inicialitzades per un constructor. En lloc d'això, la variable estàtica s'hauria d'inicialitzar explícitament fora de la classe només un cop utilitzant l'operador de resolució d'abast (: :).
Quan es crea el primer objecte, totes les dades estàtiques de tipus primitiu s’inicialitzen a zero quan no hi ha cap altra inicialització.
Consulteu l'exemple següent que mostra la variable estàtica d'una classe.
Com es mostra al codi següent, tenim el recompte de variables estàtiques com a membre de la mostra de classe. Tingueu en compte que hem inicialitzat aquesta variable explícitament fora de la classe amb el valor inicial = 0;
A continuació, incrementem aquesta variable estàtica al constructor de la classe.
Vegem un exemple de programa.
#include #include using namespace std; class sample{ int var; static int count; public: sample(int var):var(var){ cout<<'Count = '< Sortida:
Recompte = 0
Recompte = 1
Compte = 2
A la funció principal, creem tres objectes diferents. A la sortida, veiem que el valor de la variable estàtica es manté entre les creacions d'objectes i no es restableix amb cada creació d'objectes. Això per al primer objecte, compta = 0. Després s’incrementa a 1. Per al següent objecte, el recompte = 1 i així successivament.
Si el recompte fos qualsevol variable ordinària, la sortida hauria estat:
Recompte = 0
Recompte = 0
Recompte = 0
Objectes de classe estàtica
Igual que les variables membre estàtiques de la classe, podem declarar objectes de classe com estàtics. Els objectes de classe estàtica també s’inicialitzen només una vegada i es mantenen actius a tot el programa. Com que l'objecte és un tipus definit per l'usuari, un objecte de classe estàtica s'inicialitza de manera similar als objectes normals mitjançant un constructor.
Prenem un exemple de programació per entendre millor els objectes de classe estàtica.
#include using namespace std; class xyz { int i; public: xyz() { i=0; cout << 'Constructor::xyz'<En aquest programa, tenim una classe xyz amb un constructor i un destructor. A la funció principal, declarem una variable x = 0; Si x és igual a zero, creem un objecte estàtic de la classe xyz.
El programa proporciona la següent sortida.
quin és el millor netejador gratuït d’ordinadors
Sortida:
Constructor :: xyz
Final principal
Destructor :: xyz
Normalment la sortida hauria d'haver estat
Constructor :: xyz
Destructor :: xyz
Final principal
Però a mesura que creem un objecte estàtic, aquest objecte té un abast fins al final del programa i no quan l'objecte surt de l'abast (final de la sentència if). Aquesta és la raó per la qual el destructor d'object object només s'executa després que s'aconsegueix la finalització de la funció principal.
Mètodes estàtics en una classe
També podem tenir mètodes estàtics en una classe. Igual que els objectes estàtics i les variables de membre estàtic, les funcions de membre estàtic també tenen abast fins que finalitza l'execució del programa.
Quan un mètode de classe es declara estàtic, només pot accedir a variables estàtiques i funcions estàtiques de la classe. No pot accedir a membres normals de la classe.
A més, no hi ha cap punter 'això' disponible per als mètodes de classe estàtica.
Se'ns permet utilitzar l'objecte i l'operador de punts per accedir als mètodes estàtics d'una classe, però es recomana utilitzar el nom de la classe i l'operador de resolució d'abast per accedir a aquests mètodes.
A continuació es mostra un exemple d’utilitzar un mètode estàtic en una classe.
En aquest exemple, hem definit dues variables de membre estàtic A i B, i un mètode estàtic printValues. Les variables A i B s’inicialitzen als valors 10 i 20 respectivament. En el mètode estàtic printValues, els valors d'A i B passen per postincrement i preincrement respectivament. Després, s’imprimeixen els valors.
Al mètode principal, anomenem directament el mètode estàtic printValues mitjançant el nom de la classe, ja que no necessitem cap objecte per invocar les funcions estàtiques.
#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; }
Sortida:
Valor de A: 11
Valor de B: 21
A continuació es mostra la captura de pantalla de la mateixa sortida.

Així doncs, a la sortida veiem que els valors de les variables estàtiques es canvien segons les operacions que s’hi realitzen.
Finalitat de les funcions estàtiques
Després d’haver vist els diversos usos de les paraules clau estàtiques en aquest tutorial, queda una pregunta sobre quin és el propòsit de les funcions estàtiques.
El propòsit de les funcions estàtiques es pot resumir a continuació:
- Utilitzem funcions estàtiques quan aquesta funció no depèn de l'objecte per invocar i treballar.
- Un altre propòsit de l’ús de la funció estàtica és limitar-ne l’ús. A diferència de les funcions globals, l'accés a les funcions estàtiques es limita al fitxer on es col·loquen. Per tal de limitar l'accés a la funció, la fem estàtica.
- A part dels dos motius anteriors, fem servir funcions estàtiques quan no volem crear un objecte d'una classe només per executar una funció que no es refereixi a cap membre de la classe.
Conclusió
Per concloure aquest tema, podem dir que la paraula clau estàtica en C ++ es pot utilitzar de diverses maneres per declarar variables, variables membres, objectes de classe, mètodes, etc.
No cal accedir a les funcions i variables estàtiques del membre amb l’objecte, sinó que es pot accedir directament mitjançant el nom de la classe. A més, l’abast de les entitats estàtiques es manté durant tota l’execució del programa. Per tant, la paraula clau estàtica també es pot utilitzar per controlar l'accés d'una entitat concreta.
En els nostres propers tutorials, aprendrem més sobre diversos altres temes de POO en C ++.
=> Consulteu aquí per veure aquí els tutorials de formació A-Z de C ++.
Lectura recomanada
- Mofant de mètodes privats, estàtics i buits mitjançant Mockito
- Proves estàtiques i proves dinàmiques: diferència entre aquestes dues tècniques de prova importants
- TOP 40 Eines d’anàlisi de codi estàtic (les millors eines d’anàlisi de codi font)
- Millor sèrie de tutorials C # GRATU :TS: la millor guia C # per a principiants
- Parameterització de valors estàtics a LoadRunner
- Variables de Python
- Tipus d’herència en C ++
- Variables en C ++