Menu
Coddy logo textTech

Fondamenti di costruttori e distruttori

Fa parte della sezione Programmazione orientata agli oggetti del percorso C++ di Coddy. Lezione 10 di 104.

Un costruttore è un metodo speciale che viene eseguito automaticamente quando viene creato un oggetto. Un distruttore viene eseguito quando l'oggetto viene distrutto.

Costruttore predefinito

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

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

Costruttore con parametri

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

Sovraccarico dei costruttori: costruttori multipli

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;
    }
};

Distruttore: viene eseguito quando l'oggetto viene distrutto

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

Creare oggetti con costruttori diversi

Book book1;                        // Costruttore predefinito
Book book2("Harry Potter");         // Un parametro
Book book3("1984", 328);            // Due parametri

I costruttori hanno lo stesso nome della classe e non hanno un tipo di ritorno. I distruttori usano ~ClassName() e vengono chiamati automaticamente in ordine inverso rispetto alla creazione quando gli oggetti escono dall'ambito.

challenge icon

Sfida

Medio

Crea una classe Product con tre costruttori sovraccaricati e un distruttore:

  • Costruttore con 3 parametri: nome, prezzo, scorte
  • Costruttore con 2 parametri: nome, prezzo (scorte = 0)
  • Costruttore predefinito: name = "Unknown", price = 0, stock = 0
  • Distruttore: stampa "Destroying: <name>"

Provalo tu

#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 iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore C++ online