ayuda

28/03/2005 - 09:23 por willian saavedra | Informe spam
quien me colabora con un ejemplo de constructores y destructores.

gracias

Preguntas similare

Leer las respuestas

#1 Rodrigo Corral [MVP]
28/03/2005 - 23:00 | Informe spam
Un ejemplo de que?


Un saludo
Rodrigo Corral González [MVP]

FAQ de microsoft.public.es.vc++
http://rcorral.mvps.org
Respuesta Responder a este mensaje
#2 Willser F. González C.
29/03/2005 - 17:15 | Informe spam
Aquí va un intento:


// Declaración de la clase, sus atributos, sus Constructores y su
Destructor.

class Empleado
{
public:

Empleado(); //
Constructor 1.

Empleado(long i_lNumeroIdentificacion,
char *i_pcNombreCompleto,
float i_fSalarioMensua); // Constructor
2.

~Empleado(); // Destructor.


// Atributos.

public:

long m_lNumeroIdentificacion;

char *m_pcNombreCompleto;

float m_fSalarioMensual;
}


// Implementación de los Constructores y del Destructor de la clase
Empleado.


// Constructor para inicializar los atributos en cero o nulos.

Empleado::Empleado() // Constructor 1.
{
m_lNumeroIdentificacion = 0;

m_pcNombreCompleto = NULL;

m_fSalarioMensual = 0.0f;
}


// Constructor para inicializar los atributos con los valores pasados en los
parámetros.

Empleado::Empleado(long i_lNumeroIdentificacion,
char *i_pcNombreCompleto,
float i_fSalarioMensua) //
Constructor 2.
{
m_lNumeroIdentificacion = i_lNumeroIdentificacion;

m_fSalarioMensual = i_fSalarioMensua;

if (i_pcNombreCompleto != NULL)
{
m_pcNombreCompleto = new char [ strlen( i_pcNombreCompleto ) + 1 ];

strcpy(m_pcNombreCompleto, i_pcNombreCompleto);
}
else
m_pcNombreCompleto = NULL;
}


// Destructor para liberar recursos reservados durante el tiempo de vida de
un objeto de esta clase.

Empleado::~Empleado() // Destructor.
{
if (m_pcNombreCompleto != NULL)
delete [] m_pcNombreCompleto; // Eliminar la memoria reservada
para el Nombre Completo, si existe.
}


// Función para instanciar objetos de la clase Empleado.

main ()
{
Empleado l_eEmpleado0; // Aquí se llama automáticamente al
Constructor 1.

Empleado l_eEmpleado1; // Aquí se llama automáticamente al
Constructor 1.

Empleado l_eEmpleado2(12345, "Willian Saavedra", "3000"); // Aquí
se llama automáticamente al Constructor 2.


// Aquí imprimiría: 0, '', 0.00

printf("Datos del Empleado 1: ID: %ld, Nombre: '%s', Salario: %.2f",
l_eEmpleado0.m_lNumeroIdentificacion,
l_eEmpleado0.m_pcNombreCompleto,
l_eEmpleado0.m_fSalarioMensual)

l_eEmpleado1.m_pcNombreCompleto = new char [50];

strcpy(l_eEmpleado1.m_pcNombreCompleto, "Willian S");


// Aquí imprimiría: 0, 'Willian S', 0.00

printf("Datos del Empleado 1: ID: %ld, Nombre: '%s', Salario: %.2f",
l_eEmpleado1.m_lNumeroIdentificacion,
l_eEmpleado1.m_pcNombreCompleto,
l_eEmpleado1.m_fSalarioMensual)


// Aquí imprimiría: 12345, 'Willian Saavedra', 3000.00

printf("Datos del Empleado 2: ID: %ld, Nombre: '%s', Salario: %.2f",
l_eEmpleado2.m_lNumeroIdentificacion,
l_eEmpleado2.m_pcNombreCompleto,
l_eEmpleado2.m_fSalarioMensual)

// Aquí, al terminar el ámbito de esta función "main()" y por tanto, de
las variables declaradas dentro de ella, se llama automáticamente al
Destructor en tres ocasiones, una para l_eEmpleado0, otra para l_eEmpleado1
y otra para l_eEmpleado2.
}

En resumen, los constructores son una característica especial de las clases
para que se puedan hacer algunas operaciones de manera automática en el
momento de instanciar un objeto de una clase dada. Una clase puede tener
más de un constructor, pero sólo puede tener un destructor.

El destructor es utilizado generalmente para liberar los recursos, de
memoria por ejemplo, reservados durante el tiempo de vida del objeto
instanciado. Esta función se llama automáticamente justo un momento antes en
que un objeto deja de existir.

Los dos son funciones pertenecientes a una clase aunque no son obligatorias,
se declaran como tales, excepto que no tienen un tipo de retorno y su nombre
siempre debe ser igual al nombre de la clase, para el caso del destructor,
el nombre va precedido del símbolo "~". Una clase puede llegar tener
constructor(es) pero no destructor, o los dos, o viceversa.

Cualquier duda o aporte, no dude en escribirla(o).

Willser F.
Respuesta Responder a este mensaje
#3 willian saavedra
06/04/2005 - 04:12 | Informe spam
muchas gracias me sirvio el ejemplo
"Willser F. González C." wrote in message
news:
Aquí va un intento:


// Declaración de la clase, sus atributos, sus Constructores y su
Destructor.

class Empleado
{
public:

Empleado(); //
Constructor 1.

Empleado(long i_lNumeroIdentificacion,
char *i_pcNombreCompleto,
float i_fSalarioMensua); // Constructor
2.

~Empleado(); // Destructor.


// Atributos.

public:

long m_lNumeroIdentificacion;

char *m_pcNombreCompleto;

float m_fSalarioMensual;
}


// Implementación de los Constructores y del Destructor de la clase
Empleado.


// Constructor para inicializar los atributos en cero o nulos.

Empleado::Empleado() // Constructor 1.
{
m_lNumeroIdentificacion = 0;

m_pcNombreCompleto = NULL;

m_fSalarioMensual = 0.0f;
}


// Constructor para inicializar los atributos con los valores pasados en


los
parámetros.

Empleado::Empleado(long i_lNumeroIdentificacion,
char *i_pcNombreCompleto,
float i_fSalarioMensua) //
Constructor 2.
{
m_lNumeroIdentificacion = i_lNumeroIdentificacion;

m_fSalarioMensual = i_fSalarioMensua;

if (i_pcNombreCompleto != NULL)
{
m_pcNombreCompleto = new char [ strlen( i_pcNombreCompleto ) +


1 ];

strcpy(m_pcNombreCompleto, i_pcNombreCompleto);
}
else
m_pcNombreCompleto = NULL;
}


// Destructor para liberar recursos reservados durante el tiempo de vida


de
un objeto de esta clase.

Empleado::~Empleado() // Destructor.
{
if (m_pcNombreCompleto != NULL)
delete [] m_pcNombreCompleto; // Eliminar la memoria reservada
para el Nombre Completo, si existe.
}


// Función para instanciar objetos de la clase Empleado.

main ()
{
Empleado l_eEmpleado0; // Aquí se llama automáticamente al
Constructor 1.

Empleado l_eEmpleado1; // Aquí se llama automáticamente al
Constructor 1.

Empleado l_eEmpleado2(12345, "Willian Saavedra", "3000"); //


Aquí
se llama automáticamente al Constructor 2.


// Aquí imprimiría: 0, '', 0.00

printf("Datos del Empleado 1: ID: %ld, Nombre: '%s', Salario: %.2f",
l_eEmpleado0.m_lNumeroIdentificacion,
l_eEmpleado0.m_pcNombreCompleto,
l_eEmpleado0.m_fSalarioMensual)

l_eEmpleado1.m_pcNombreCompleto = new char [50];

strcpy(l_eEmpleado1.m_pcNombreCompleto, "Willian S");


// Aquí imprimiría: 0, 'Willian S', 0.00

printf("Datos del Empleado 1: ID: %ld, Nombre: '%s', Salario: %.2f",
l_eEmpleado1.m_lNumeroIdentificacion,
l_eEmpleado1.m_pcNombreCompleto,
l_eEmpleado1.m_fSalarioMensual)


// Aquí imprimiría: 12345, 'Willian Saavedra', 3000.00

printf("Datos del Empleado 2: ID: %ld, Nombre: '%s', Salario: %.2f",
l_eEmpleado2.m_lNumeroIdentificacion,
l_eEmpleado2.m_pcNombreCompleto,
l_eEmpleado2.m_fSalarioMensual)

// Aquí, al terminar el ámbito de esta función "main()" y por tanto,


de
las variables declaradas dentro de ella, se llama automáticamente al
Destructor en tres ocasiones, una para l_eEmpleado0, otra para


l_eEmpleado1
y otra para l_eEmpleado2.
}

En resumen, los constructores son una característica especial de las


clases
para que se puedan hacer algunas operaciones de manera automática en el
momento de instanciar un objeto de una clase dada. Una clase puede tener
más de un constructor, pero sólo puede tener un destructor.

El destructor es utilizado generalmente para liberar los recursos, de
memoria por ejemplo, reservados durante el tiempo de vida del objeto
instanciado. Esta función se llama automáticamente justo un momento antes


en
que un objeto deja de existir.

Los dos son funciones pertenecientes a una clase aunque no son


obligatorias,
se declaran como tales, excepto que no tienen un tipo de retorno y su


nombre
siempre debe ser igual al nombre de la clase, para el caso del destructor,
el nombre va precedido del símbolo "~". Una clase puede llegar tener
constructor(es) pero no destructor, o los dos, o viceversa.

Cualquier duda o aporte, no dude en escribirla(o).

Willser F.


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida