Menu
Coddy logo textTech

Noções básicas de construtores e destruidores

Parte da seção Programação Orientada a Objetos do Journey de C++ da Coddy. Lição 10 de 104.

Um construtor é um método especial que é executado automaticamente quando um objeto é criado. Um destrutor é executado quando o objeto é destruído.

Construtor Default

class Book {
private:
    std::string title;
    int pages;

public:
    Book() {
        this->title = "Unknown";
        this->pages = 0;
    }
};

Construtor parametrizado

Book(std::string title, int pages) {
    this->title = title;
    this->pages = pages;
}

Sobrecarga de construtor: vários construtores

class Book {
private:
    std::string title;
    int pages;

public:
    Book() {
        this->title = "Unknown";
        this->pages = 0;
    }
    
    Book(std::string title) {
        this->title = title;
        this->pages = 0;
    }
    
    Book(std::string title, int pages) {
        this->title = title;
        this->pages = pages;
    }
};

Destrutor: é executado quando o objeto é destruído

class Book {
public:
    ~Book() {
        std::cout << "Book destroyed" << std::endl;
    }
};

Criando objetos com diferentes construtores

Book book1;                        // Construtor padrão
Book book2("Harry Potter");         // Um parâmetro
Book book3("1984", 328);            // Dois parâmetros

Os construtores têm o mesmo nome que a classe e não possuem tipo de retorno. Os destrutores usam ~ClassName() e são chamados automaticamente na ordem inversa à de criação quando os objetos saem do escopo.

challenge icon

Desafio

Médio

Crie uma classe Product com três construtores sobrecarregados e um destrutor:

  • Construtor com 3 parâmetros: nome, preço, estoque
  • Construtor com 2 parâmetros: nome, preço (estoque = 0)
  • Construtor padrão: nome = "Unknown", preço = 0, estoque = 0
  • Destrutor: imprime "Destroying: <name>"

Experimente você mesmo

#include <iostream>
#include "Product.h"

int main() {
    std::string name;
    int price, stock;
    std::getline(std::cin, name);
    std::cin >> price >> stock;
    
    Product product1(name, price, stock);
    Product product2("Keyboard", 79);
    Product product3;
    
    std::cout << "Product 1: " << product1.getName() << " - $" << product1.getPrice() << " (Stock: " << product1.getStock() << ")" << std::endl;
    std::cout << "Product 2: " << product2.getName() << " - $" << product2.getPrice() << " (Stock: " << product2.getStock() << ")" << std::endl;
    std::cout << "Product 3: " << product3.getName() << " - $" << product3.getPrice() << " (Stock: " << product3.getStock() << ")" << std::endl;
    return 0;
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Programação Orientada a Objetos

Pratique por conta própria: Compilador de C++ online