Constructores c++

Solo disponible en BuenasTareas
  • Páginas : 6 (1345 palabras )
  • Descarga(s) : 0
  • Publicado : 6 de febrero de 2012
Leer documento completo
Vista previa del texto
Constructores
En C++ una forma de asegurar que los objetos siempre contengan valores válidos es escribir un constructor.

Un constructor es una función miembro especial de una clase que es llamada automáticamente siempre que se declara un objeto de esa clase. Su función es crear e inicializar un objeto de su clase.

Un constructor se distingue fácilmente por que tiene el mismo nombre que laclase a la que pertenece. Por ejemplo, el constructor para la clase CFecha se denomina también CFecha.

Cuando una clase tiene un constructor, éste será invocado automáticamente siempre que se cree un nuevo objeto de esa clase.

Un constructor no se hereda, no puede retornar un valor (incluyendo void) y no puede ser declarado const ni static.

Se puede crear un objeto de cualquiera de lasformas siguientes:

1) Declarando un objeto global

2) Declarando un objeto local u objeto temporal

3) Invocando al operador new

4) Llamando explícitamente a un constructor



Existen 5 tipos de constructores:

1) Constructor por omisión (implícito)
2) Constructor explícito con argumentos
3) Constructor explícito con argumentos por omisión
4) Constructorcopia
5) Constructor explícito


Constructor por omisión

Dado que los constructores son funciones miembro, admiten argumentos igual que éstas. Cuando en una clase no especificamos ningún constructor el compilador crea uno por omisión sin argumentos.

Un constructor por omisión de una clase determinada es un constructor que se puede invocar sin argumentos.

Si el objeto creado esglobal, el constructor por omisión inicializa a ceros los datos miembro numéricos y a nulos los datos miembro alfanuméricos. Si el objeto creado es local, lo inicializa con valores indeterminados (basura).


Constructor explícito con argumentos


Un constructor explícito con argumentos es aquel que define una lista de argumentos que le ayudarán a inicializar el objeto con valores válidos,en dicha lista de argumentos recibe los valores con los cuales inicializará el objeto que se va a construir.

Ejemplo:
#include

class CFecha
{
private:
int dia, mes, anio;
protected:
int Bisiesto( );
public:
CFecha(int, int, int); //constructor explícito con argumentos
void asignarFecha( );
void obtenerFecha( );
int fechaCorrecta( );
};

CFecha::CFecha(intdd, int mm, int aa)
{
dia=dd;
mes=mm;
anio=aa;
}
//…
// Aquí continua la construcción del resto de las funciones miembro de la clase.
//…

Una vez declarado el constructor explícito con argumentos en la clase, la declaración de los objetos en el programa sería de la siguiente forma:

#include
#include
#include “CFecha.h” //Nombre del archivo de la clase CFecha

voidmain( )
{
CFecha fecha1(13,9,2009); //ejecuta el constructor explícito con argumentos
CFecha fecha2(23,10,2009);

fecha1.obtenerFecha();
fecha2.obtenerFecha();
getch();
}

Una vez que se ha declarado un constructor, como en el caso del constructor explícito con argumentos, éste substituye al constructor por omisión que genera el compilador y ya no podemos declarar objetos sinenviar argumentos como en el caso:
CFecha fecha3;
Esta línea generaría un error ya que el nuevo constructor requiere tres argumentos enteros. Para solucionar este problema, debemos agregar a la clase el constructor por omisión tal como se muestra a continuación:

#include

class CFecha
{
private:
int dia, mes, anio;
protected:
int Bisiesto( );
public:
CFecha(){ };// constructor por omisión
CFecha(int, int, int); //constructor explícito con argumentos
void asignarFecha( );
void obtenerFecha( );
int fechaCorrecta( );
};

CFecha::CFecha(int dd, int mm, int aa)
{
dia=dd;
mes=mm;
anio=aa;
}
//…
// Aquí continua la construcción del resto de las funciones miembro de la clase.
//…

Una vez declarado en la clase el constructor por...
tracking img