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 originalstruct Imagen
{
int dimensiones;
int colores;
// más y más atributos...
};
Estos atributos los inicializas después de crearlos:
Código C:
Ver originalImagen unNombre;
unNombre.dimensiones = 0;
unNombres.colores = 256;
//etc.. etc..
Alguien se le ocurrió meter toda la rutina de inicializar en una función, por lo que quedó:
Código C:
Ver originalImagen unNombre;
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 originalstruct Imagen
{
int dimensiones;
int colores;
// más y más atributos...
Imagen()
{
dimensiones = 0;
colores = 256;
//etc...
}
};
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.