Constructores

Cuando creamos un objeto de una clase, siempre seguimos los mismos pasos para llamar a un conjunto de métodos que inicializen los datos del objeto. En C++, se define una función especial, el constructor, que es llamada cuando se crea un nuevo objeto de la clase. Este constructor puede tomar parámetros, como cualquier otra función. Veamos un ejemplo de clase sin constructor y con constructor:

# include <iostream.h>

class Caja {
    double longitud, anchura, altura;
  public:
    Caja (double dim1, double dim2, double dim3);
    double volumen (void);
};

Caja :: Caja (double dim1, double dim2, double dim3)
{
    longitud = dim1;
    anchura = dim2;
    altura = dim3;
};

double Caja:: volumen (void) {
    return longitud * anchura * altura;
};

main ()
{
   Caja pequeña(5, 4, 10), mediana (10, 6, 20), grande(20, 10, 30);

   cout << "El volumen de la caja grande es " << grande.volumen() << '\n';
}

En este sencillo ejemplo vemos las características más importantes de un constructor:

Cuando se crea un objeto de una clase, se llama automáticamente al constructor. Si tuviésemos un puntero a una clase, su constructor no sería llamado a menos que reservámos memoria para aquello a lo que apunta el puntero, utilizando new.

Un constructor es una función, y por tanto podemos aplicarle todo lo que hemos visto que las funciones en C++ pueden hacer. Por ejemplo, podemos sobrecargarlo:

# include <iostream.h>

class Caja {
    double longitud, anchura, altura;
  public:
    Caja (double dim1, double dim2, double dim3);
    Caja (void);
    double volumen (void);
};

Caja :: Caja (void)
{
    longitud = 8;
    anchura = 8;
    altura = 8;
};

Hemos creado una función constructora que inicializa las dimensiones de la caja a 8. Esta será llamada cuando creemos un objeto del tipo Caja sin ningún parámetro.

Free Web Hosting