Foros del Web » Programación para mayores de 30 ;) » C/C++ »

inicialisar variables en clases

Estas en el tema de inicialisar variables en clases en el foro de C/C++ en Foros del Web. hola tengo una duda cono puedo inicialisar en una clase por ejemplo: Código: class ejemplo { public: . . . private: int x; double y; ...
  #1 (permalink)  
Antiguo 15/08/2008, 15:40
Avatar de Fayca  
Fecha de Ingreso: abril-2008
Mensajes: 164
Antigüedad: 16 años, 1 mes
Puntos: 2
Pregunta inicialisar variables en clases

hola tengo una duda cono puedo inicialisar en una clase por ejemplo:

Código:
class ejemplo
{
    public:
        .
        .
        .
    private:
        int x;
        double y;
};
ahi como puedo inicialisar x,y?
  #2 (permalink)  
Antiguo 16/08/2008, 11:16
Avatar de WaRc3L  
Fecha de Ingreso: agosto-2008
Ubicación: My House
Mensajes: 89
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: inicialisar variables en clases

pues, en teoria no se podria acceder a las variables privadas... si quieres acceder a las variables privadas puedes hacerlo diferentes maneras:

La primera: crear un constructor, que tenga dos parametros, en este caso de tipo int, y que pone los valores en las variables, si el valor tiene un valor fijo en todo el programa, puedes hacer que el constructor no tenga parametros, y lo inicializas normalmente dentro de la defincion. Me explico con un ejemplo:

Código:
// Declaracion, de la clase Clase
class Clase
{
     public:
       Clase(int Par01, double Par02); // Constructor

     private:
           int x;
           double y;

};

// Defincion de la clase Clase
Clase::Clase(int Par01,double Par02)
{
          x = Par01;
          y = Par02;
}
// main en otro fichero:

#include "Clase.h"

int main(void)
{
      Clase A(10,15); // Los dos parametros, se refieren al del constructor, 10 pasaria a Par01, y 15 a Par02, despues se inicializarian las variables x e y

        return 0;
}
La segunda: Si quieres hacerlo de otra forma, podrias crear una funcion, que sea para inicializar las variables, el numero de parametros en este caso ( como el ejemplo de arriba ) serian dos. Me explico con el siguiente ejemplo:
Código:
// Declaracion de la clase Clase
class Clase
{
         public:
                 void Inicializar(int A, double B);
          private:
               int x;
               double y;
};
// Definicion de la clase Clase

void Clase::Inicializar(int A,double B)
{
      x = A;
      y = B;
}

// main en un otro fichero

#include "Clase.h"

int main(void)
{
      Clase Var01;

      Var01.Inicializar(10,15.2); // Se acceda a los metodos publicos usando el punto ('.')
      return 0;
}
Tercera: Esta forma, no es recomendable, pero se puede hacer, podrias poner las variables publicas en vez de privadas, pero normalmente se inicializan con funciones publicas ( como el segundo ejemplo ).

Saludos! espero que te haya servido mi explicacion!

Última edición por WaRc3L; 16/08/2008 a las 11:19 Razón: Poner mas informacion
  #3 (permalink)  
Antiguo 16/08/2008, 11:32
Avatar de Fayca  
Fecha de Ingreso: abril-2008
Mensajes: 164
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: inicialisar variables en clases

creeo que no me explique bien, mira por ejemplo
supongamos que en el ejemplo que puse
x es un contador, entonces si con una funcion llo le aumento
x++;
ba a estar incorrecto por que no inicialise x y tiene otro balor que no es 0
almenos que como dices ponga una funcion,
inicializar();
que me ponga en 0 el contador
  #4 (permalink)  
Antiguo 16/08/2008, 11:47
Avatar de WaRc3L  
Fecha de Ingreso: agosto-2008
Ubicación: My House
Mensajes: 89
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: inicialisar variables en clases

Buenas!, en el constructor, puede tener sin parametros, para poder tener el valor principal, y asi te estalvias poner la funcion inicializar, que solo sirviria una vez ... te pongo el ejemplo del constructor, y de la funcion incrementar:

Código:
// Declaracion de la clase Clase

class Clase
{
         private:
                 int x;
         public:
                 Clase();
                 void IncrementarX(void);
};

//Definicion de la clase Clase

Clase::Clase()
{
        x = 0; // Empieza con el valor 0.
}

void Clase::IncrementarX(void)
{
       x = x + 1; // Subes a uno la variable x
}
Despues, solo necesitarias llamar a la funcion Incrementar tantas veces como fuera necesario, si quieres comprovar que incrementa, puede hacer una funcion, que lo que hace es solamente visualizar la variable x, ya que no se puede acceder a las variables privadas.

PD: Si aun no es esto, te lo digo en general. Cualquier variable privada, solo se puede acceder su valor ( inicializarlo, incrementarlo, multiplicarlo por 2, visualizarlo etc ... ) con metodos publicos de la clase o con el constructor ( con el constructor solo serviria una vez, ya que solo se llama automaticamente al objeto de la clase ).

Saludos!

Última edición por WaRc3L; 16/08/2008 a las 11:55 Razón: mas informacion jeje!
  #5 (permalink)  
Antiguo 16/08/2008, 12:31
Avatar de Fayca  
Fecha de Ingreso: abril-2008
Mensajes: 164
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: inicialisar variables en clases

Hola grasias por tu respuesta si era eso,
lo que habia hecho hasta ahorita era con una funcion que las inicializara pero es mejor empesar a usarlas sin
tener que llamar a una funcion.

y lo de que solo se puede hacer una vez pues eso es lo buscaba siempre solo se
puede inicializar 1 vez
  #6 (permalink)  
Antiguo 16/08/2008, 12:51
Avatar de WaRc3L  
Fecha de Ingreso: agosto-2008
Ubicación: My House
Mensajes: 89
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: inicialisar variables en clases

Bueno, si no sabes algo de los constructores ( seguramente ahora si ) te explico una poquita informacion:

Los constructoros de cualquier clase, son metodos, con el mismo nombre de la clase, que se llaman automaticamente al declarar un objeto de dicha clase.

Código:
Clase Objeto;
Quando haces, el codigo de arriba, en cualquier lugar ( normalmente en el main ) lo que hace directamente es llamar al constructor, que ahi normalmente se inicializan las variables. Pueden aver varios constructores, ( con el mismo nombre claro, porque obligatoriamente tienen el nombre de la clase ), ( igual que pueden aver funciones con el mismo nombre ) , lo unico que varian son los parametros. Si tu haces lo siguiente:

Código:
Clase Objeto(2,1);
Se llamaria al constructor que tiene dos parametros ( en este caso de tipo int todos dos ), y nadie puede negar que puede hacer esto:

Código:
Clase Objeto01;
Clase Objeto02(5,4);
Objeto01, llama automaticamente al constructor sin parametros, en cambio Objeto02 llama al constructor de dos parametros.

Saludos! Espero que te haya servido!
  #7 (permalink)  
Antiguo 16/08/2008, 14:21
Avatar de Fayca  
Fecha de Ingreso: abril-2008
Mensajes: 164
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: inicialisar variables en clases

gracias por la informacion, si me sirvio
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:29.