static c
Importância e uso de estática em C ++ com exemplos.
Em nossos tópicos anteriores sobre classes de armazenamento, fomos apresentados à palavra estático. Aprendemos sobre variáveis estáticas que são declaradas em um programa C ++. Sabemos que as variáveis estáticas são inicializadas apenas uma vez e retêm o valor em todo o programa.
Semelhante às variáveis estáticas, neste tutorial, vamos estender o uso de uma palavra-chave estática para:
- Variáveis de membro estático em uma classe
- Objetos de classe estática
- Classe de métodos estáticos
=> Verifique os tutoriais detalhados de treinamento C ++ aqui.
O que você aprenderá:
- Variáveis de membro estático em uma classe
- Objetos de classe estática
- Métodos estáticos em uma classe
- Objetivo das funções estáticas
- Conclusão
- Leitura recomendada
Variáveis de membro estático em uma classe
Uma variável estática nunca é alocada em uma pilha. Eles têm espaço alocado em diferentes armazenamentos estáticos. Isso significa que, quando declaramos uma variável estática em uma classe, essa variável é compartilhada por todos os objetos dessa classe.
download gratuito do software do youtube video downloader
Como as variáveis estáticas são inicializadas apenas uma vez e são compartilhadas por todos os objetos de uma classe, as variáveis estáticas nunca são inicializadas por um construtor. Em vez disso, a variável estática deve ser inicializada explicitamente fora da classe apenas uma vez, usando o operador de resolução de escopo (: :).
Quando o primeiro objeto é criado, todos os dados estáticos do tipo primitivo são inicializados para zero quando nenhuma outra inicialização está presente.
Verifique o exemplo a seguir que demonstra a variável estática em uma classe.
Conforme mostrado no código a seguir, temos a contagem de variável estática como um membro do exemplo de classe. Observe que inicializamos essa variável explicitamente fora da classe com o valor inicial = 0;
Em seguida, incrementamos essa variável estática no construtor da classe.
Vejamos um programa de exemplo.
#include #include using namespace std; class sample{ int var; static int count; public: sample(int var):var(var){ cout<<'Count = '< Resultado:
Contagem = 0
Contagem = 1
Contagem = 2
Na função principal, criamos três objetos diferentes. Na saída, vemos que o valor da variável estática é mantido entre as criações do objeto e não redefinido a cada criação do objeto. Isso para o primeiro objeto, contagem = 0. Em seguida, é incrementado para 1. Para o próximo objeto, a contagem = 1 e assim por diante.
Se a contagem fosse qualquer variável comum, a saída teria sido:
Contagem = 0
Contagem = 0
Contagem = 0
Objetos de classe estática
Assim como as variáveis de membro estático de classe, podemos declarar objetos de classe como estáticos. Objetos de classe estática também são inicializados apenas uma vez e permanecem ativos em todo o programa. Como o objeto é um tipo definido pelo usuário, um objeto de classe estática é inicializado de forma semelhante aos objetos comuns usando um construtor.
Vamos dar um exemplo de programação para entender melhor os objetos de classe estática.
#include using namespace std; class xyz { int i; public: xyz() { i=0; cout << 'Constructor::xyz'<Neste programa, temos uma classe xyz com um construtor e um destruidor. Na função principal, declaramos uma variável x = 0; Se x for igual a zero, criamos um objeto estático da classe xyz.
O programa fornece a seguinte saída.
Resultado:
Construtor :: xyz
End Main
Destruidor :: xyz
Normalmente, a saída deveria ter sido
c ++ rand entre 0 e 1
Construtor :: xyz
Destruidor :: xyz
End Main
Mas, como criamos um objeto estático, este objeto tem um escopo até o final do programa e não quando o objeto sai do escopo (fim da instrução if). Esta é a razão pela qual o destruidor do objeto obj executa somente após o final da função principal ser alcançado.
Métodos estáticos em uma classe
Também podemos ter métodos estáticos em uma classe. Assim como objetos estáticos e variáveis de membro estático, funções de membro estático também têm escopo até que a execução do programa termine.
Quando um método de classe é declarado estático, ele só pode acessar membros estáticos, ou seja, variáveis estáticas e funções estáticas da classe. Ele não pode acessar membros comuns da classe.
Além disso, não há nenhum ponteiro “this” disponível para métodos de classe estática.
o gateway padrão não está disponível no Windows 8
Temos permissão para usar o objeto e o operador ponto para acessar os métodos estáticos de uma classe, mas é recomendado usar o nome da classe e o operador de resolução de escopo para acessar esses métodos.
Abaixo está um exemplo de uso de um método estático em uma classe.
Neste exemplo, definimos duas variáveis de membro estático A e B e um método estático printValues. As variáveis A e B são inicializadas com os valores 10 e 20, respectivamente. No método estático printValues, os valores de A e B sofrem pós Incremento e pré Incremento respectivamente. Depois disso, os valores são impressos.
No método principal, chamamos diretamente o método estático printValues usando o nome da classe, pois não precisamos de nenhum objeto para invocar as funções estáticas.
#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; }
Resultado:
Valor de A: 11
Valor de B: 21
A captura de tela da mesma saída é fornecida abaixo.

Portanto, na saída, vemos que os valores de ambas as variáveis estáticas são alterados de acordo com as operações realizadas nelas.
Objetivo das funções estáticas
Tendo visto os vários usos da palavra-chave static neste tutorial, uma questão permanece quanto ao propósito das funções estáticas.
O objetivo das funções estáticas pode ser resumido conforme abaixo:
- Usamos funções estáticas quando essa função não depende do objeto para invocar e trabalhar.
- Ainda outro propósito de usar a função estática é limitar seu uso. Ao contrário das funções globais, o acesso às funções estáticas é limitado ao arquivo no qual elas são colocadas. Assim, para limitar o acesso à função, nós o tornamos estático.
- Além dos dois motivos acima, usamos funções estáticas quando não queremos criar um objeto de uma classe apenas para executar uma função que não está se referindo a nenhum membro da classe.
Conclusão
Para concluir este tópico, podemos dizer que a palavra-chave estática em C ++ pode ser usada de várias maneiras para declarar variáveis, variáveis de membro, objetos de classe, métodos, etc.
Variáveis e funções de membro estáticas não precisam ser acessadas com o objeto, em vez disso, podem ser acessadas diretamente usando o nome da classe. Além disso, o escopo das entidades estáticas permanece durante a execução do programa. Portanto, a palavra-chave estática também pode ser usada para controlar o acesso de uma entidade específica.
Em nossos próximos tutoriais, aprenderemos mais sobre vários outros tópicos OOP em C ++.
=> Verifique aqui para ver os tutoriais de treinamento A-Z de C ++ aqui.
Leitura recomendada
- Zombar de métodos privados, estáticos e vazios usando Mockito
- Teste estático e teste dinâmico - diferença entre essas duas técnicas de teste importantes
- TOP 40 ferramentas de análise de código estático (melhores ferramentas de análise de código-fonte)
- Best FREE C # Tutorial Series: The Ultimate C # Guide For Beginners
- Parametrização de valores estáticos no LoadRunner
- Variáveis Python
- Tipos de herança em C ++
- Variáveis em C ++