Da trilha de C++ Este conceito ainda não saiu como card do dia. ir para o card de hoje

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

  • class define um tipo com membros de dados e funções; por padrão, membros são private.
  • Use public: para expor a interface e private: 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.
pessoa.cpp
#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;
}

Exercícios

  1. 1
    Fácil

    Criando uma classe Contador

    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.

    Resolver
  2. 2
    Médio

    Classe Retangulo com construtor e this

    Crie uma classe Retangulo com membros privados double largura e double altura. Forneça um construtor que recebe largura e altura como parâmetros e usa this para atribuir aos membros. Adicione métodos públicos area() e perimetro(). No main, crie dois retângulos, imprima a área e o perímetro de cada um.

    Resolver
  3. 3
    Desafio

    Classe Livro com múltiplos construtores e validação

    Implemente uma classe Livro com membros privados std::string titulo, std::string autor e int ano. Forneça três construtores: um padrão que inicializa com valores vazios/zero, um que recebe título e autor (ano = 0), e um que recebe todos os parâmetros. Adicione um método público exibir() que imprime os dados formatados. Inclua um método setAno(int ano) que só aceita anos maiores ou iguais a 0; caso contrário, mantém o valor anterior. No main, crie três livros usando cada construtor, exiba-os, altere o ano de um deles e exiba novamente.

    Resolver

Continue estudando