Variável estática C ++

Variável estática C ++
“Estática é uma palavra -chave ou modificador em C ++ que se refere a um tipo, não a uma instância. Portanto, acessar os membros estáticos não requer uma instância. Campos, métodos, construtores, classes, propriedades, operadores e eventos podem ser estáticos em c++. Ele salva a memória porque não precisamos mais construir uma instância para acessar os membros estáticos. Além disso, porque é um membro do tipo, uma instância não será criada toda vez que a memória é usada. Exemplos diferentes das várias maneiras de usar estática em C ++ são apresentados neste artigo. Os métodos para utilizar estática em C ++ são detalhados aqui. Eles mostram como os vários métodos funcionam e como eles podem ser empregados de várias maneiras.”

Exemplo 1

Vamos conferir esta primeira instância de uma variável estática em c++.

#incluir
#incluir
usando namespace std;
void my_demo ()

estático int count_val = 0;
cout<count_val ++;

int main ()

para (int i = 0; i<4; i++)
My_demo ();
retornar 0;

Dentro da função "my_demo", criamos a variável estática "count_val" utilizando a palavra -chave estática e configurando -a com o valor zero. Depois disso, o count_val é incrementado para a próxima chamada de função. Em seguida, temos a principal função em que temos um loop para iteração e invocar a função "my_demo".

O resultado do script variável estática acima é o seguinte:

Exemplo 2

As variáveis ​​estáticas em uma classe são acessíveis pelos objetos, pois recebem espaço atribuído em armazenamento estático separado, o que significa que as variáveis ​​marcadas como estáticas são inicializadas apenas uma vez uma vez. As mesmas variáveis ​​estáticas não podem ser usadas mais de uma vez para objetos diferentes. Além disso, devido a isso, os construtores não podem inicializar variáveis ​​estáticas. Como resultado, o usuário precisa inicializar manualmente variáveis ​​estáticas dentro das classes usando o nome da classe e o operador de resolução de escopo além da classe, conforme ilustrado abaixo:

#incluir
usando namespace std;
classe myclass

público:
estático int x;
Minha classe()

// Corpo vazio
;
;
int myclass :: x = 2;
int main ()

Myclassobj;
cout<

Estabelecemos uma classe "MyClass", que é mantida pública. Em seguida, definimos uma variável estática "x". Então, criamos o construtor da classe "MyClass", que não faz nada por causa de seu corpo vazio. Fora da aula, inicializamos explicitamente a variável estática "x" com a resolução do escopo "::". Então, dentro do Int Main, declaramos o objeto "Obj" invocando a "myclass" e imprimindo seu valor.

O valor da variável estática X definida no script acima é exibida abaixo.

Exemplo 3

Como você pode ver no programa acima, fizemos um esforço para fazer várias duplicatas da variável estática para vários objetos. Mas isso não aconteceu.

#incluir
usando namespace std;
Classe MyClass2

int a;
público:
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";

Estabelecemos uma classe, "MyClass2" e declaramos um objeto como "a". Em seguida, definimos o construtor de "myclass2", que inicializa o objeto "a" com o valor zero. Além disso, ele coutá a declaração "corpo construtor". Além disso, construímos o destruidor da classe "MyClass2", que apenas imprime a declaração "Corpo Destutor". Depois disso, criamos a função principal do INT, que define e inicializa outro objeto como "B" definido como zero. Além disso, temos uma declaração IF que tem a condição de que o objeto "b" é igual ao valor zero e depois define o objeto do construtor myclass2 como "obj". No final, chamamos o comando cout, que imprimirá a mensagem do principal terminado.

O seguinte resultado é impresso no prompt.

Exemplo 4

O objeto é designado como não estático no programa IF de mencionado acima mencionado. Portanto, o escopo da variável é restrito ao bloco se. Como resultado, o construtor de funções é chamado quando um objeto é criado, e o destruidor é chamado assim que o controle do Block não estiver mais em vigor porque o escopo de um objeto é limitado ao bloco if, onde é declarado. Agora vamos examinar como a saída mudará se declararmos que o objeto é estático.

#incluir
usando namespace std;
classe myclass3

int x = 0;
público:
Myclass3 ()

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

~ Myclass3 ()

cout<< "Destructor Section\n";

;
int main ()

int y = 0;
se (y == 0)

estático myclass3 obj;

cout<< "Main Ended\n";


Criamos a classe "myclas3", como no programa acima. Em seguida, definimos a variável x e atribuímos um valor de zero. O construtor e o destruidor também são estabelecidos dentro da classe "MyClass3". Dentro da declaração principal, se condicional, declaramos o objeto estático de "myclass3".

A mudança no desempenho é óbvia. Como o destruidor é chamado na tela de prompt subsequente após a principal, isso ocorreu como resultado da vida útil do programa ser coberta por objetos estáticos.

Exemplo 5

A existência de funções estáticas de membro em uma classe é independente de qualquer objeto de classe, assim como a de membros de dados estáticos ou variáveis ​​estáticas. Em contraste com os membros não estáticos de dados e funções membros da classe, as funções estáticas são permitidas apenas o acesso a outras funções estáticas para membros ou outros membros de dados estáticos.

#incluir
usando namespace std;
Classe new_class

público:
estático void display_msg ()

cout<<"Welcome to my portal";

;
int main ()

New_class :: display_msg ();

A classe “new_class” possui um modificador público que define a função estática do vazio como “display_msg”. Dentro dessa função estática de membro "Display_MSG", imprimimos a instrução Cout. Fora do “new_class”, temos o método principal do programa em que invocamos a função de membro estático “Display_MSG”.

A saída imprime a mensagem dentro da função de membro estático "Display_MSG" da seguinte forma:

Conclusão

Nossa compreensão da idéia estática em C ++ pode ser baseada no artigo mencionado acima. Na área de armazenamento estático, os itens estáticos são atribuídos apenas um armazenamento uma vez durante um programa. Além disso, eles são válidos para todo o período do programa. Este guia discute as várias técnicas de uso estático, juntamente com exemplos de trabalho. Usar os conceitos de acordo com as necessidades do programador será mais fácil com a ajuda dos exemplos.