Saltar al contenido principal
eLearner.app
Módulo 4 · Lección 2 de 210/18 en el curso~12 min
Lecciones del módulo (2/2)

Costruttori e Distruttori

I costruttori e i distruttori sono funzioni membro speciali che gestiscono il ciclo di vita degli oggetti: la loro creazione (inizializzazione) e la loro distruzione (rilascio delle risorse).

I Costruttori

Un costruttore viene chiamato automaticamente quando un oggetto della classe viene creato in memoria.

  • Ha lo stesso nome della classe.
  • Non ha tipo di ritorno (nemmeno void).
  • Può essere sovraccaricato (overloaded) per accettare diversi set di parametri.
Code
#include <iostream>
#include <string>

class Item {
private:
    std::string name;
    double price;

public:
    // Costruttore con parametri
    Item(std::string itemName, double itemPrice) {
        name = itemName;
        price = itemPrice;
        std::cout << "Oggetto " << name << " creato." << std::endl;
    }

    void display() {
        std::cout << name << ": " << price << " euro" << std::endl;
    }
};

int main() {
    // Chiamata implicita al costruttore passando i parametri
    Item book("Libro C++", 29.99);
    book.display();
    return 0;
}

Costruttore di Default

Se non definisci alcun costruttore, il compilatore C++ ne genera uno di default senza parametri. Tuttavia, se scrivi un costruttore personalizzato con parametri, il costruttore di default automatico non viene più generato, e dovrai definirlo esplicitamente se ti serve:

Code
class Point {
public:
    int x;
    int y;

    // Costruttore di default esplicito
    Point() {
        x = 0;
        y = 0;
    }
};

I Distruttori

Un distruttore viene chiamato automaticamente quando l'oggetto esce dallo scope o viene esplicitamente rimosso dalla memoria.

  • Ha lo stesso nome della classe preceduto da una tilde ~ (es. ~Item()).
  • Non accetta parametri e non ha tipo di ritorno.
  • Viene usato per rilasciare risorse occupate (es. chiudere file, liberare memoria allocata dinamicamente).
Code
class ResourceManager {
public:
    ~ResourceManager() {
        // Codice di pulizia
        std::cout << "Risorse liberate." << std::endl;
    }
};

Prova tu

Ejercicio#cpp.m4.l2.e1
Intentos: 0Cargando...

Definisci una classe User con un membro privato std::string username. Aggiungi un costruttore pubblico che accetta una stringa (User(std::string name)) e la usa per inizializzare username. Aggiungi un getter pubblico std::string getUsername() che restituisce username. Nel main crea un User passandogli 'Alice' come nome e stampa l'username ottenuto usando std::cout.

Cargando editor...
Mostrar pista

Il costruttore ha lo stesso nome della classe e non specifica alcun tipo di ritorno, nemmeno `void`.

Solución disponible después de 3 intentos

Ejercicio#cpp.m4.l2.e2
Intentos: 0Cargando...

Definisci una classe Point con due membri pubblici interi x e y. Aggiungi un costruttore di default (senza parametri) che inizializza x e y a 0. Nel main crea un oggetto Point usando il costruttore di default e stampa x e y.

Cargando editor...
Mostrar pista

Il costruttore di default non prende argomenti: `Point() { x = 0; y = 0; }`.

Solución disponible después de 3 intentos