Ver Mensaje Individual
  #16 (permalink)  
Antiguo 15/04/2015, 14:39
amchacon
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 11 años, 10 meses
Puntos: 28
Respuesta: ¿Para qué necesito un Constructor? (Sí, novato inside XD).

Voy a explicartelo también, pero voy a partir de cero.

Un constructor no es más que una función para inicializar una estructura, antiguamente en C cuando tenías una estructura como esta:

Código C++:
Ver original
  1. struct Imagen
  2. {
  3.     int dimensiones;
  4.     int colores;
  5.    // más y más atributos...
  6. };

Estos atributos los inicializas después de crearlos:
Código C:
Ver original
  1. Imagen unNombre;
  2.  
  3. unNombre.dimensiones = 0;
  4. unNombres.colores = 256;
  5. //etc.. etc..

Alguien se le ocurrió meter toda la rutina de inicializar en una función, por lo que quedó:
Código C:
Ver original
  1. Imagen unNombre;
  2.  
  3. InicializarImagen(&unNombre);

Mucho más legible, y se empezó a usar en todas las librerías de forma masiva.

El problema que tiene eso, esque te olvides de llamar a la función. Y ahí es cuando se liaba parda.

C++ plantea una mejora a este sistema, estas funciones pasan a llamarse constructores y se ejecutan siempre al crear una clase.

De modo que ahora sería:
Código C++:
Ver original
  1. struct Imagen
  2. {
  3.     int dimensiones;
  4.     int colores;
  5.    // más y más atributos...
  6.  
  7.    Imagen()
  8.   {
  9.        dimensiones = 0;
  10.        colores = 256;
  11.        //etc...
  12.   }
  13. };

Código C:
Ver original
  1. Imagen unNombre;
Mucho más claro. Al crear un objeto siempre se inicializa sin que tengas que acordarte de llamar a x función, ya lo hace el compilador solito.

Como habrás notado, el constructor tiene siempre el mismo nombre que el objeto. Esa es la sintaxis que se ha escogido.