Fácil C++
Criando uma classe Contador
Enunciado
Crie uma classe Contador com um membro privado int valor. Adicione um construtor que inicializa valor com 0, um método público incrementar() que soma 1 e um método público getValor() que retorna o valor atual. No main, crie um objeto, incremente duas vezes e imprima o valor.
Requisitos
- A classe deve ter o membro
valorcomoprivate. - O construtor deve inicializar
valorcom 0. - Os métodos
incrementar()egetValor()devem ser públicos. - A saída deve mostrar o valor 2.
Código inicial
#include <iostream>
class Contador {
// complete aqui
};
int main() {
// crie um objeto e teste
return 0;
}
Saída esperada
Valor: 2
Ver dica
Use private: para o membro e public: para os métodos. O construtor pode ser Contador() : valor(0) {}.
Mostrar solução
#include <iostream>
class Contador {
private:
int valor; // membro privado
public:
// Construtor inicializa valor com 0
Contador() : valor(0) {}
// Incrementa o valor em 1
void incrementar() {
++valor;
}
// Retorna o valor atual
int getValor() const {
return valor;
}
};
int main() {
Contador c; // cria objeto, chama construtor
c.incrementar(); // valor = 1
c.incrementar(); // valor = 2
std::cout << "Valor: " << c.getValor() << "\n";
return 0;
}
Passo a passo
- Declaramos a classe
Contadorcom a palavra-chaveclass. - Dentro dela,
private:indica quevalorsó pode ser acessado pelos membros da classe. - O construtor
Contador() : valor(0) {}usa lista de inicialização para definirvalorcomo 0. - O método
incrementar()aumentavalorem 1 usando++valor. - O método
getValor()retorna o valor atual; éconstporque não modifica o objeto. - No
main, criamosContador c;— o construtor padrão é chamado automaticamente. - Chamamos
incrementar()duas vezes e imprimimos o resultado comgetValor().
Por que funciona
O encapsulamento garante que valor não seja alterado diretamente fora da classe, apenas por meio de métodos controlados. O construtor assegura que todo objeto Contador comece com valor 0, evitando lixo de memória. Assim, o código é seguro e previsível.
Erros comuns
- Esquecer
public:: os métodos ficam privados e não podem ser chamados nomain.
void incrementar() { ... }sempublic:causa erro de compilação. - Não inicializar
valorno construtor: o membro fica com valor indeterminado.
Contador() {}deixavalorsem inicialização. - Declarar
getValor()semconst: não é erro, mas impede chamar em objetos constantes.
Prefiraint getValor() const.
Outra forma de resolver
Usar struct (tudo público por padrão) e inicializar valor diretamente:
struct Contador {
int valor = 0;
void incrementar() { ++valor; }
int getValor() const { return valor; }
};
Isso é preferível quando não há necessidade de encapsulamento rígido.
Saída esperada
Valor: 2