Programación General > C/C++
duda con objetos
(1/1)
Alfonsos1:
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];
--- Fin de la cita ---
en ese ejemplo todos los objetos de miscosas tendrian la variable peso con un valor de 1, ¿no?
ProfesorX:
--- 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.
--- Fin de la cita ---
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
--- Fin de la cita ---
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];
--- Fin de la cita ---
en ese ejemplo todos los objetos de miscosas tendrian la variable peso con un valor de 1, ¿no?
--- Fin de la cita ---
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++ --- class cosa{public: int peso; cosa(); // Costructor}; cosa::cosa() // Constructor{ peso=1;}
Recomiendo que leas sobre constructores (llamados al crear el objeto) y su contraparte, los destructores, (llamados cuando eliminas el objeto).
Saludos :)
Alfonsos1:
--- Citar ---el metodo iniciar no tiene el mismo nombre de tu clase
--- Fin de la cita ---
fue sin querer
gracias por la respuesta
Navegación
Ir a la versión completa