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)

Constructores y Destructores

Los constructores y destructores son funciones miembro especiales que gestionan el ciclo de vida de los objetos: su creación (inicialización) y su destrucción (liberación de recursos).

Los Constructores

Un constructor se llama automáticamente cuando se crea un objeto de la clase en memoria.

  • Tiene el mismo nombre que la clase.
  • No tiene tipo de retorno (ni siquiera void).
  • Puede sobrecargarse (overloaded) para aceptar diferentes conjuntos de parámetros.
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;
}

Constructor por Defecto

Si no defines ningún constructor, el compilador de C++ genera uno por defecto sin parámetros. Sin embargo, si escribes un constructor personalizado con parámetros, el constructor por defecto automático ya no se genera, y tendrás que definirlo explícitamente si lo necesitas:

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

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

Los Destructores

Un destructor se llama automáticamente cuando el objeto sale de su ámbito (scope) o es eliminado explícitamente de la memoria.

  • Tiene el mismo nombre de la clase precedido por una tilde ~ (ej. ~Item()).
  • No acepta parámetros y no tiene tipo de retorno.
  • Se utiliza para liberar los recursos ocupados (ej. cerrar archivos, liberar memoria asignada dinámicamente).
Code
class ResourceManager {
public:
    ~ResourceManager() {
        // Codice di pulizia
        std::cout << "Risorse liberate." << std::endl;
    }
};

Pruébalo tú mismo

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

Define una clase User con un miembro privado std::string username. Añade un constructor público que acepte una cadena (User(std::string name)) y la use para inicializar username. Añade un getter público std::string getUsername() que devuelva username. En el main crea un User pasándole 'Alice' como nombre y imprime el username obtenido usando std::cout.

Cargando editor...
Mostrar pista

El constructor tiene el mismo nombre que la clase y no especifica ningún tipo de retorno, ni siquiera `void`.

Solución disponible después de 3 intentos

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

Define una clase Point con dos miembros públicos enteros x y y. Añade un constructor por defecto (sin parámetros) que inicialice x y y a 0. En el main crea un objeto Point usando el constructor por defecto y imprime x y y.

Cargando editor...
Mostrar pista

El constructor por defecto no toma argumentos: `Point() { x = 0; y = 0; }`.

Solución disponible después de 3 intentos