Classes – Static e Construtores – C++

Publicado: 10 de fevereiro de 2014 em C/C++

Construtores

Construtores são métodos especiais chamados pelo sistema no momento da criação de um objeto. Eles não possuem valor de retorno, porque você não pode chamar um construtor para um objeto, você só usa o construtor no momento da inicialização do objeto. Construtores representam uma oportunidade de inicializar seus dados de forma organizada. Construtores são obrigatórios em uma classe, mas não é preciso declara-los, caso não declare um construtor por default a declaração é: Classe().

Static

Enquanto a maioria das variáveis ​​declaradas dentro de uma classe ocorre em uma base de instância a instância (o que quer dizer que, para cada instância de uma classe, a variável pode ter um valor diferente), uma variável de membro estático tem o mesmo valor em qualquer instância a classe e nem sequer exige uma instância da classe para existir.

Lembrando que C++ não é preciso declarar uma nova instancia da classe como em Java, um vez a classe declarada basta chama-la sem usar o clássico comando java new:


// Instanciando uma classe JAVA

Bebe Marcia = new Bebe();

// Instanciando uma classe C++

Bebe Marcia;

Exemplo:

Neste cenário queremos saber quantos objetos de uma determinada classe foram instanciados, para isto criamos um contador no construtor do objeto e a cada objeto criado o contador aumenta nos mostrando no final a quantidade exata de novos objetos de uma classe. Visto que nosso contador pertence a classe e não a cada instancia de cada classe, neste caso para usar o contador não precisamos instanciar a classe graças a declaração static.

C++

Classe #1  – Principal

#include "stdafx.h"
#include <iostream>
#include <string>
#include "bebe.h"

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
 {
  Bebe bebe1;
  Bebe bebe2;
  Bebe bebe3;

  cout << "Bebe 1 Construtor: " << bebe1.numeroBebeStatico << " Publico estatico: " << bebe1.numeroPublico() << endl;
  cout << "Bebe 2 Construtor: " << bebe2.numeroBebeStatico << " Publico estatico: " << bebe2.numeroPublico() << endl;
  cout << "Bebe 3 Construtor: " << bebe3.numeroBebeStatico << " Publico estatico: " << bebe3.numeroPublico() << endl;

  system("pause");
  return 0;
 }

Classe # 2 – Construtor

#include "stdafx.h"
#include <iostream>
#include <string>

 using namespace std;

class Bebe {
 private:
  int id;
  static int numeroBebePublico;

public:

static int numeroBebeStatico;

int numeroPublico()
  {
   numeroBebePublico++;
   return numeroBebePublico;
  }

// Construtor da classe
   Bebe()
  {
   id = Bebe::numeroBebeStatico++;
  }
};
 int Bebe::numeroBebeStatico = 0;
 int Bebe::numeroBebePublico = 0;
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s