Você está aqui: C++ ::: Dicas & Truques ::: Programação Orientada a Objetos |
Definindo e usando variáveis estáticas em suas classes C++Quantidade de visualizações: 10927 vezes |
|
Variáveis estáticas podem ser definidas em C++ por meio do uso da palavra-chave static. Uma variável estática pertence à classe na qual ela é definida e não à cada uma de suas instâncias. Pareceu confuso? Você pode pensar assim: quando definida com o modificador static, uma variável será única na classe, não importa a quantidade de instâncias da classe que serão criadas. Cada uma destas instâncias compartilhará o valor da variável estática. Além disso, uma variável estática pode ser acessada por meio do nome da classe, sem a necessidade de uma referência a uma de suas instâncias. Uma variável estática pode ser public, private ou protected. Vamos ver um exemplo? Considere a situação na qual gostaríamos de criar um identificador único para cada um dos objetos de uma classe. Vamos começar com o arquivo de definição da classe Livro: Código para Livro.h ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
// vamos evitar múltiplas inclusões do
// arquivo de cabeçalho (header file)
#ifndef LIVRO_H
#define LIVRO_H
// vamos incluir o header string
#include <string>
using namespace std;
class Livro{
public:
// construtor da classe Livro
Livro();
// método que permite retornar o título do livro
string getTitulo();
// método que permite definir o título do livro
void setTitulo(string);
// método que permite retornar o identificador do livro
int getId();
private:
// variáveis privadas
string titulo;
// variável estática que permitirá definir um
// identificador único para cada livro
static int id;
};
#endif
Aqui a variável estática id é declarada como private. Como nossa intenção é usá-la como identificador único de instâncias, obtemos seu valor por meio do método público getId(). Veja agora o arquivo de implementação para esta classe: Código para Livro.cpp: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
// arquivo de implementação para a
// classe Livro
// vamos incluir o header Livro.h
#include "Livro.h"
// vamos declarar e inicializar a variável estática
int Livro::id = 0;
// implementação do construtor
Livro::Livro(){
// vamos incrementar a variável estática
Livro::id++;
}
// método que permite obter o título do livro
string Livro::getTitulo(){
return this->titulo;
}
// método que permite definir o título do livro
void Livro::setTitulo(string titulo){
this->titulo = titulo;
}
// método que permite obter o título do livro
int Livro::getId(){
return Livro::id;
}
O primeiro detalhe a observar no código de implementação da classe Livro é a linha: int Livro::id = 0; O compilador C++ nos força a fazer esta declaração e inicialização de variáveis estáticas. Note o uso do nome da classe seguida por um par de dois pontos (::). Para finalizar, veja como criar três objetos da classe Livro a partir da função main() da aplicação: Código para main.cpp: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
#include <cstdlib>
#include <iostream>
// vamos incluir a classe Livro
#include "Livro.h"
using namespace std;
int main(int argc, char *argv[])
{
// vamos criar um objeto da classe Livro
Livro *a = new Livro();
a->setTitulo("Programando em Java 2");
// vamos exibir os dados do livro
cout << "Id: " << a->getId() << endl;
cout << "Titulo: " << a->getTitulo() << endl;
// vamos criar mais um livro
Livro *b = new Livro();
b->setTitulo("A biblia do C/C++");
// vamos exibir os dados do livro
cout << "Id: " << b->getId() << endl;
cout << "Titulo: " << b->getTitulo() << endl;
// e mais um livro aqui
Livro *c = new Livro();
c->setTitulo("PHP + MySQL");
// vamos exibir os dados do livro
cout << "Id: " << c->getId() << endl;
cout << "Titulo: " << c->getTitulo() << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Ao executar esta aplicação teremos o seguinte resultado: Id: 1 Titulo: Programando em Java 2 Id: 2 Titulo: A biblia do C/C++ Id: 3 Titulo: PHP + MySQL Como podemos ver, a cada instância criada a variável id é incrementada em 1. Caso você não tenha entendido todo o processo, este incremento acontece no construtor da classe Livro. Veja: // vamos incrementar a variável estática Livro::id++; Nas situações em que as variáveis estáticas são públicas, podemos acessá-la usando o nome da classe e um par de dois pontos (::). Assim, se a variável id fosse pública, poderíamos acessá-la de qualquer lugar de nossa aplicação da seguinte forma: cout << Livro::id << endl; |
|
|
Desafios, Exercícios e Algoritmos Resolvidos de C++ |
Veja mais Dicas e truques de C++ |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |







