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.
2. quisiera saber si esto ocurre cuando declaro un array de objetos
R. Si de nuevo
por ejemplo:
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).
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