[C con Clase] Ayuda en C++ con constructores y destructores!!!

Steven Davidson srd4121 en njit.edu
Jue Mar 31 07:59:53 CEST 2011


Hola Jovanny,

On 3/31/2011 1:18 AM, Jovanny wrote:
> Hola, espero alguien me pueda ayudar...
>
> En este semestre de la carrera de ingeniería en computación, en la
> materia de Programación orientada a Objetos, no le entiendo muy bien
> a los constructores y destructores, menos a asignación dinámica de
> memoria, herencia... etc.
>
> Por ahora me interesa aprender y dominar los constructores y
> destructores.
>
> Además, mi maestro no enseña muy bien que digamos!!!
>
> Espero me puedan ayudar, ya que he leído muchos tutoriales y libros
> pero aún no lo comprendo completamente.
>

Primeramente, sugiero que consultes los capítulos 11 ( 
http://c.conclase.net/curso/index.php?cap=011#STR_funciones ), para una 
pequeña introducción a los constructores, y 29 ( 
http://c.conclase.net/curso/index.php?cap=029#inicio ). Para los 
destructores, consulta el capítulo 30 ( 
http://c.conclase.net/curso/index.php?cap=030#inicio ).

Brevemente, te comento que un constructor no es más que una función 
miembro de una estructura o clase, que se invoca automática e 
implícitamente al instanciar (crear) un objeto de tal estructura o 
clase. El nombre del constructor es idéntico al de la estructura o clase 
y no se indica explícitamente el tipo de retorno. Por ejemplo,

struct Algo
{
   int numero;

   Algo()
   {
     numero = -1;
   }
};

Ahora instanciamos un objeto:

Algo obj;

Automáticamente, se invoca el constructor 'Algo()', antes de terminar de 
definir 'obj'. Como puedes ver, una de las razones de usar un 
constructor es para inicializar los datos miembro de tal estructura o 
clase, ya que se hace automática e implícitamente. Ahora podemos usar el 
objeto - y su contenido - inmediatamente. Por ejemplo,

cout << obj.numero << endl;

El destructor es parecido al constructor, pero es invocado justo antes 
de destruir tal objeto. Nos sirve para ejecutar sentencias necesarias 
típicamente para "limpieza". El uso más popular es para liberar memoria 
dinámica que hemos adjudicado previamente, pero también nos puede servir 
para cerrar ficheros o incluso escribir datos a un fichero, justo antes 
de finalizar este objeto.


Si tienes alguna duda puntual acerca de estos dos temas, coméntanosla 
con detalles.


Espero haber aclarado algo del tema.

Steven





Más información sobre la lista de distribución Cconclase