Ver Mensaje Individual
  #4 (permalink)  
Antiguo 14/04/2015, 18:58
dmorill
 
Fecha de Ingreso: junio-2014
Mensajes: 144
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: ¿Para qué necesito un Constructor? (Sí, novato inside XD).

Hola, hay que saber algunas cosas primero: en una estructura agrupar tipos de variables y también funciones, estas funciones dentro de estructuras son llamados métodos, y las variables se les llama atributos. Las estructuras son el paso previo antes de formular una clase (lo único que le falta a un struct para ser clase es tener atributos privados).

Una vez el compilador crea las estructuras, hay que darles valores a sus miembros, y para ello se crearon los constructores que son métodos que tu no los llamas (amenos que crees objetos anónimos), se llaman automáticamente para inicializar a los atributos. Lo que tu haces (i=0) es luego de llamar al constructor, y realmente lo que haces es una asignación.

Por otro lado la como método especial los constructores te permiten inicializar con valores dados por el usuario, que de otra forma no se podría:

Código C++:
Ver original
  1. struct punto{
  2. int _x, _y;
  3. punto(int x, int y) : _x(x), _y(y) {}
  4. };
  5.  
  6. int main(){
  7. punto p(2, 3);
  8.  
  9. return 0;
  10. }

O poner valores por defecto, poner constructores de copia, o con funciones más complejas como tu quieras.

Finalmente cuando la estructura finaliza su alcance de ejecución (cuando se sale del {} más externo que lo contiene), el compilador debe llamar a su destructor, es decir se debe especificar como destruir esa estructura que tu formaste, esto lo verás útil en manejo de memoria dinámica es decir con punteros en el heap, pues si no se destruye puede causar fugas de memoria (que aunque no se use ese objeto sigue ocupando espacio en la ram).

Saludos