C++ POO Básico
Classes
Em C++, uma classe é um tipo definido pelo usuário que agrupa dados (membros de dados) e funções (membros de função) que operam sobre esses dados. Ela é a base da programação orientada a objetos, permitindo encapsulamento e abstração.
Os membros de uma classe podem ser public (acessíveis de qualquer lugar) ou private (acessíveis apenas dentro da própria classe). Por padrão, tudo em uma class é privado, enquanto em uma struct é público. O construtor é uma função especial chamada automaticamente quando um objeto é criado; ele inicializa os membros e pode ser sobrecarregado. A palavra-chave this é um ponteiro para o próprio objeto, útil para diferenciar membros de parâmetros ou para encadear chamadas.
Neste card, você aprenderá a declarar classes, controlar o acesso com public e private, escrever construtores e usar this corretamente.
Pontos-chave
classdefine um tipo com membros de dados e funções; por padrão, membros sãoprivate.- Use
public:para expor a interface eprivate:para esconder a implementação. - O construtor tem o mesmo nome da classe, não tem tipo de retorno e inicializa o objeto.
thisé um ponteiro constante para o objeto atual e permite acessar membros quando há ambiguidade de nomes.- Construtores podem ser sobrecarregados e usados para inicializar membros de formas diferentes.
#include <iostream>
#include <string>
class Pessoa {
private:
std::string nome;
int idade;
public:
// Construtor padrão
Pessoa() : nome("Sem nome"), idade(0) {}
// Construtor com parâmetros (usa this para diferenciar)
Pessoa(const std::string& nome, int idade) {
this->nome = nome; // this->nome refere-se ao membro
this->idade = idade;
}
// Método para exibir dados
void apresentar() const {
std::cout << "Olá, meu nome é " << nome
<< " e tenho " << idade << " anos.\n";
}
// Método que altera a idade (setter)
void setIdade(int novaIdade) {
if (novaIdade >= 0)
idade = novaIdade;
}
};
int main() {
Pessoa p1; // chama construtor padrão
Pessoa p2("Maria", 30); // chama construtor com parâmetros
p1.apresentar();
p2.apresentar();
p2.setIdade(31);
p2.apresentar();
return 0;
}