SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: Alfonsos1 en Jueves 20 de Enero de 2011, 23:19

Título: duda con objetos
Publicado por: Alfonsos1 en Jueves 20 de Enero de 2011, 23:19
si se le da el mismo nombre a una funcion miembro que a su clase, cuando se creea un objeto la funcion mismbro se ejecuta automaticamente.

quisiera saber si esto ocurre cuando declaro un array de objetos

por ejemplo:

Citar
class cosa
{
 public:
   int peso;
   void iniciar();
};

void cosa::iniciar()
{
  peso=1;
}

//y luego el array:

cosa miscosas[10][10];

en ese ejemplo todos los objetos de miscosas tendrian la variable peso con un valor de 1, ¿no?
Título: Re: duda con objetos
Publicado por: ProfesorX en Jueves 20 de Enero de 2011, 23:54
Cita de: "Alfonsos1"
1. si se le da el mismo nombre a una funcion miembro que a su clase, cuando se creea un objeto la funcion mismbro se ejecuta automaticamente.

R. Si, aunque esta funcion pertenece a un tipo especial llamado constructor.

Citar
2. quisiera saber si esto ocurre cuando declaro un array de objetos

R. Si de nuevo

Citar
por ejemplo:

Citar
class cosa
{
 public:
   int peso;
   void iniciar();
};

void cosa::iniciar()
{
  peso=1;
}

//y luego el array:

cosa miscosas[10][10];

en ese ejemplo todos los objetos de miscosas tendrian la variable peso con un valor de 1, ¿no?

El ejemplo que pones es incorrecto, ya que el metodo iniciar no tiene el mismo nombre de tu clase, por lo tanto el metodo iniciar nunca se ejecutara al crear la clase, la forma correcta seria eliminar el void y cambiar el nombre del metodo a cosa (que llamare constructor de ahora en adelante y no metodo, ya que en realidad eso es y aunque un constructor se parezca a los metodos de una clase, no son iguales).

Código: C++
  1.  
  2. class cosa
  3. {
  4. public:
  5.     int peso;
  6.     cosa(); // Costructor
  7. };
  8.  
  9. cosa::cosa() // Constructor
  10. {
  11.     peso=1;
  12. }
  13.  
  14.  
  15.  

Recomiendo que leas sobre constructores (llamados al crear el objeto) y su contraparte, los destructores, (llamados cuando eliminas el objeto).

Saludos :)
Título: Re: duda con objetos
Publicado por: Alfonsos1 en Viernes 21 de Enero de 2011, 00:25
Citar
el metodo iniciar no tiene el mismo nombre de tu clase
fue sin querer

gracias por la respuesta