Classes e objetos
1. O que são Classes e Objetos?
- Classe: É um molde que define os atributos (dados) e métodos (funções) que os objetos daquele tipo terão. Por exemplo, uma classe
Carropode ter atributos como cor e modelo, e métodos comoacelerar()etravar(). - Objeto: É uma instância concreta de uma classe. Se
Carroé a classe, entãomeuCarroé um objeto criado a partir desse molde ou classe.
2. Estrutura Básica de uma Classe em C++
class Pessoa {
private:
std::string nome;
int idade;
public:
// Construtor
Pessoa(std::string n, int i) {
nome = n;
idade = i;
}
// Método para exibir dados
void exibir() {
std::cout << "Nome: " << nome << ", Idade: " << idade << std::endl;
}
};
- private: Atributos acessíveis apenas dentro da classe.
- public: Métodos acessíveis fora da classe.
3. Criar Objetos (Instanciando Classes)
int main() {
Pessoa p1("João", 30); // Cria um objeto do tipo Pessoa
p1.exibir(); // Chama o método exibir
return 0;
}
- Aqui,
p1é um objeto da classePessoa.
4. Construtores e destrutores
Veja um tutorial breve e direto sobre construtores e destrutores em C++:
O que são Construtores?
- Construtores são funções especiais de uma classe, chamadas automaticamente quando um objeto é criado.
- Têm o mesmo nome da classe e não possuem tipo de retorno.
- Servem para inicializar os atributos do objeto e podem ser sobrecarregados (vários construtores com diferentes parâmetros).
Tipos principais de construtores:
- Construtor padrão: Não recebe parâmetros.
- Construtor por parâmetros: Recebe argumentos para inicializar os atributos.
- Construtor de cópia: Recebe outro objeto da mesma classe e copia os seus valores.
Exemplo prático:
#include <iostream>
using namespace std;
class Filme {
public:
string titulo;
string diretor;
unsigned int anoDeLancamento;
// Construtor padrão
Filme() : titulo("sem titulo"), diretor("ninguem"), anoDeLancamento(9999) {}
// Construtor por parâmetros
Filme(const string& t, const string& d, unsigned int a)
: titulo(t), diretor(d), anoDeLancamento(a) {}
// Construtor de cópia
Filme(const Filme& outro)
: titulo(outro.titulo), diretor(outro.diretor), anoDeLancamento(outro.anoDeLancamento) {}
};
- Ao criar um objeto, o construtor correspondente é chamado automaticamente:
Filme a; // Construtor padrão
Filme b("Matrix", "Wachowski", 1999); // Construtor por parâmetros
Filme c(b); // Construtor de cópia
O que é o Destrutor?
- Destrutor é uma função especial chamada automaticamente quando um objeto é destruído (ex.: fim do escopo ou uso de
delete). - O nome é o mesmo da classe, mas precedido por
~(til) e não recebe parâmetros nem retorna valor. - Usado para liberar recursos, fechar arquivos, desalocar memória etc.
Exemplo prático:
class Filme {
public:
// ... (construtores como acima)
~Filme() {
cout << "Destruindo objeto Filme: " << titulo << endl;
}
};
Resumo prático
- Construtor: inicializa o objeto ao ser criado.
- Destrutor: executa ações finais quando o objeto é destruído.
- Ambos são fundamentais para o gerenciamento seguro de recursos em C++.
4. Métodos Getters e Setters
Para acessar ou modificar atributos privados, usamos métodos públicos chamados getters e setters:
class Pessoa {
private:
std::string nome;
public:
void setNome(std::string n) {
nome = n;
}
std::string getNome() {
return nome;
}
};
- Isso garante o encapsulamento dos dados.
5. Dicas Importantes
- Separe a declaração da classe (geralmente em
.hou.hpp) da implementação dos métodos (em.cpp), especialmente em projetos maiores. - Use construtores para inicializar objetos e destrutores para libertar recursos, se necessário.
6. Exemplo Completo
#include <iostream>
using namespace std;
class Pessoa {
private:
string nome;
int idade;
public:
Pessoa(string n, int i) : nome(n), idade(i) {}
void exibir() {
cout << "Nome: " << nome << ", Idade: " << idade << endl;
}
};
int main() {
Pessoa p1("Maria", 25);
p1.exibir();
return 0;
}
Este exemplo cria uma classe, instancia um objeto e exibe seus dados.
