Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: megalomania en 27 Junio 2010, 12:40 pm



Título: [C++] Dudas en general
Publicado por: megalomania en 27 Junio 2010, 12:40 pm
Alguien me puede explicar como se usan y para que sirven.

Muchas gracias de antemano.

Un saludo.


Título: Re: Variables static en c++
Publicado por: Akai en 27 Junio 2010, 12:43 pm
http://tinyurl.com/24ztu4l

creo que ahí vas a encontrar mucha información


Título: Re: Variables static en c++
Publicado por: megalomania en 27 Junio 2010, 12:47 pm
http://tinyurl.com/24ztu4l

creo que ahí vas a encontrar mucha información

Ya salio el listillo del foro... en fin...


Título: Re: Variables static en c++
Publicado por: Horricreu en 27 Junio 2010, 13:22 pm
http://tinyurl.com/24ztu4l

creo que ahí vas a encontrar mucha información

Ya salio el listillo del foro... en fin...

En parte tiene razón, pero bueno:

Código:
http://en.wikipedia.org/wiki/Static_variable

Código:
http://www.pablin.com.ar/computer/cursos/c1/static.html

Aplica esta información en tu código y, luego si tienes dudas puedes postear tu código aquí y nosotros encantados :)

Saludos :P


Título: Re: Variables static en c++
Publicado por: megalomania en 27 Junio 2010, 13:46 pm
Muchas gracias!, entonces tendría sentido declarar una variable static de una clase A, si luego no habran mas objetos de la clase A?.

Mi duda viene a q en una practica de la uni, yo tengo por ejemplo una clase Ejemplo con atributos cualeskiera, y luego una clase EjemploHijo que extiende de Ejemplo, EjemploHijo tiene ahora un nuevo atributo static bool b, y tbn ha añadido nuevos metodos y a redefinido algunos metodos del Padre.

Entonces, en la ejecucion del programa habran como mucho 1 instancia del padre y 1 instancia del hijo, y pregunto otra vez, tiene algun sentido la variable static b?

un saludo


Título: Re: Variables static en c++
Publicado por: Horricreu en 27 Junio 2010, 13:52 pm
http://tinyurl.com/24ztu4l

creo que ahí vas a encontrar mucha información

Ya salio el listillo del foro... en fin...

En parte tiene razón, pero bueno:

Código:
http://en.wikipedia.org/wiki/Static_variable

Código:
http://www.pablin.com.ar/computer/cursos/c1/static.html

Aplica esta información en tu código y, luego si tienes dudas puedes postear tu código aquí y nosotros encantados :)

Saludos :P

Muchas gracias!, entonces tendría sentido declarar una variable static de una clase A, si luego no habran mas objetos de la clase A?.

Mi duda viene a q en una practica de la uni, yo tengo por ejemplo una clase Ejemplo con atributos cualeskiera, y luego una clase EjemploHijo que extiende de Ejemplo, EjemploHijo tiene ahora un nuevo atributo static bool b, y tbn ha añadido nuevos metodos y a redefinido algunos metodos del Padre.

Entonces, en la ejecucion del programa habran como mucho 1 instancia del padre y 1 instancia del hijo, y pregunto otra vez, tiene algun sentido la variable static b?

un saludo

A ver, tienes que dominar las clases al 100%: herencia (http://c.conclase.net/curso/index.php?cap=036) y funciones virtuales (http://c.conclase.net/curso/index.php?cap=037) en general (sobretodo polimorfismo).

Pero lo tienes que estudiar. Ya verás que luego verás esto que quieres hacer con claridad. Y si vuelves a tener dudas POSTEA EL CÓDIGO ;)

Saludos :P


Título: Re: Dudas static en c++
Publicado por: megalomania en 27 Junio 2010, 14:36 pm

A ver, tienes que dominar las classes al 100%: herencia (http://c.conclase.net/curso/index.php?cap=036) y funciones virtuales (http://c.conclase.net/curso/index.php?cap=037) en general (sobretodo polimorfismo).

Pero lo tienes que estudiar. Ya verás que luego verás esto que quieres hacer con claridad. Y si vuelves a tener dudas POSTEA EL CÓDIGO ;)

Saludos :P

Gracias, a ver tengo una duda con la herencia protected:

Si tengo una
class ClaseA
{
  public int a;
  private int b;
  protected int c;
}

class ClaseH : public ClaseA // ClaseH tendra implicito
  public int a;
  private int b;
  protected int c;

class ClaseH : private ClaseA // ClaseH tendra implicito
  private int a;
  private int b;
  private int c;

class ClaseH : protected ClaseA // ClaseH tendra implicito
  private int a;
  private int b;
  protected o private int c;?¿


salu2 y gracias!!


Título: Re: Variables static en c++
Publicado por: Littlehorse en 27 Junio 2010, 14:45 pm
Citar
Mi duda viene a q en una practica de la uni, yo tengo por ejemplo una clase Ejemplo con atributos cualeskiera, y luego una clase EjemploHijo que extiende de Ejemplo, EjemploHijo tiene ahora un nuevo atributo static bool b, y tbn ha añadido nuevos metodos y a redefinido algunos metodos del Padre.

Depende del algoritmo en general pero ve a los miembros static como si fuese un recurso inherente a la clase y no a cada instancia del objeto.

Citar
Entonces, en la ejecucion del programa habran como mucho 1 instancia del padre y 1 instancia del hijo, y pregunto otra vez, tiene algun sentido la variable static b?

Si pones el código lo podemos ver en detalle, pero a simple vista, tiene sentido.

http://tinyurl.com/24ztu4l

creo que ahí vas a encontrar mucha información

Ya salio el listillo del foro... en fin...

Cuidado con las formas de decir las cosas. Si quieres esfuerzo en la respuesta, emplea el mismo esfuerzo en elaborar tus dudas, de lo contrario seguramente recibirás un link a Google.

Citar
Gracias, a ver tengo una duda con la herencia protected:

Primero lee este link (http://www.parashift.com/c++-faq-lite/basics-of-inheritance.html)

Saludos


Título: Re: Variables static en c++
Publicado por: megalomania en 27 Junio 2010, 15:11 pm
Citar
Citar
Entonces, en la ejecucion del programa habran como mucho 1 instancia del padre y 1 instancia del hijo, y pregunto otra vez, tiene algun sentido la variable static b?

Si pones el código lo podemos ver en detalle, pero a simple vista, tiene sentido.
El problema de poner el codigo es que son muchas lineas para copiaros todo, ademas mi duda es principalmente teórica mas no técnica.
Entonces porque tendría sentido?, yo entiendo que si tengo solo una instancia del padre y otra del hijo, siendo el hijo el unico que tiene atributos static, xq tendria sentido? es decir un atributo static es una variable comun a todas las instancias de la clase, cosa q en este caso solo habrá como mucho una instancia del hijo.



Citar
Cuidado con las formas de decir las cosas. Si quieres esfuerzo en la respuesta, emplea el mismo esfuerzo en elaborar tus dudas, de lo contrario seguramente recibirás un link a Google.
Básicamente lo que ha hecho el es spam, para eso se podria ahorrar su respuesta.


Citar
Citar
Gracias, a ver tengo una duda con la herencia protected:

Primero lee este link (http://www.parashift.com/c++-faq-lite/basics-of-inheritance.html)
Saludos

Insisto, ya me he leido antes un poco de teoria, y el que me as pasado ahora, que mi ingles tampoco es para tirar cohetes, segun lo que e podido entender es cuando conviene usar los tipos de herencia, y esa no a sido mi pregunta :S.


Título: Re: Dudas static en c++
Publicado por: Horricreu en 27 Junio 2010, 15:15 pm

Gracias, a ver tengo una duda con la herencia protected:

Si tengo una
class ClaseA
{
  public int a;
  private int b;
  protected int c;
}

class ClaseH : public ClaseA // ClaseH tendra implicito
  public int a;
  private int b;
  protected int c;

class ClaseH : private ClaseA // ClaseH tendra implicito
  private int a;
  private int b;
  private int c;

class ClaseH : protected ClaseA // ClaseH tendra implicito
  private int a;
  private int b;
  protected o private int c;?¿


salu2 y gracias!!

Varias cosas:

  • Las variables declaradas en una clase, deben ir procedidas por dos puntos.
  • Utiliza GeSHi para poner tu código.

Saludos :P

PD: para utilizar GeSHI:

C
[code=c][/code]

C++
[code=cpp][/code]


Título: Re: Dudas en c++
Publicado por: megalomania en 27 Junio 2010, 15:21 pm
Gracias, a ver tengo una duda con la herencia protected:

Si tengo:
Código
  1. class ClaseA
  2. {
  3.  public int a;
  4.  private int b;
  5.  protected int c;
  6. }
  7.  
  8. class ClaseH : public ClaseA // ClaseH tendra implicito
  9.  public int a;
  10.  private int b;
  11.  protected int c;
  12.  
  13. class ClaseH : private ClaseA // ClaseH tendra implicito
  14.  private int a;
  15.  private int b;
  16.  private int c;
  17.  
  18. class ClaseH : protected ClaseA // ClaseH tendra implicito
  19.  private int a;
  20.  private int b;
  21.  protected o private int c;?¿
  22.  
  23.  

Solo quiero saber si a esta conclusión que e llegado después de leerme los links q me habéis pasado es correcto :/
salu2 y gracias!!


Título: Re: Dudas en c++
Publicado por: Horricreu en 27 Junio 2010, 15:28 pm
No sé si se me ha entendido bien en el primer punto. Esto está mal:

Código
  1. class ClaseA
  2. {
  3. public int a;
  4. private int b;
  5. protected int c;
  6. }

Cuando declaras una clase debes tener en cuenta de que:

Código
  1. class ClaseA
  2. {
  3. public:
  4.          int a;
  5.  
  6.   private:
  7.          int b;
  8.  
  9. protected:
  10.          int c;
  11. };

Siempre que se hace public/private/protected, debe ir ":". Y las clases se terminan con ";".

Saludos :P


Título: Re: Dudas en c++
Publicado por: megalomania en 27 Junio 2010, 15:33 pm
No sé si se me ha entendido bien en el primer punto. Esto está mal:

Código
  1. class ClaseA
  2. {
  3. public int a;
  4. private int b;
  5. protected int c;
  6. }

Cuando declaras una clase debes tener en cuenta de que:

Código
  1. class ClaseA
  2. {
  3. public:
  4.          int a;
  5.  
  6.   private:
  7.          int b;
  8.  
  9. protected:
  10.          int c;
  11. };

Siempre que se hace public/private/protected, debe ir ":". Y las clases se terminan con ";".

Saludos :P

Ok lo entiendo, a partir de ahora sere estricto con la sintaxis.
Ahora sería alguien tan amable de responder a mi pregunta  :-[ :-[ :-[ :-[ :-[ :-[


Título: Re: Dudas en c++
Publicado por: Littlehorse en 27 Junio 2010, 15:54 pm
Citar
El problema de poner el codigo es que son muchas lineas para copiaros todo, ademas mi duda es principalmente teórica mas no técnica.
Entonces porque tendría sentido?, yo entiendo que si tengo solo una instancia del padre y otra del hijo, siendo el hijo el unico que tiene atributos static, xq tendria sentido? es decir un atributo static es una variable comun a todas las instancias de la clase, cosa q en este caso solo habrá como mucho una instancia del hijo.

Porque posiblemente dicho miembro necesita la posibilidad de ser consultado por varias instancias del objeto. Obviamente que si tenes una sola instancia no tiene sentido, pero cuando desarrollas una clase no lo haces solamente pensando en cuantas instancias del objeto van a existir. Por eso mismo te digo que depende de la estructura general del programa.

Citar
Básicamente lo que ha hecho el es spam, para eso se podria ahorrar su respuesta.

Lo que digas, a mi no me parece. Si planteas tu duda en forma de "Para que sirve tal x" sin elaborar mas, otra cosa no podes esperar. En todo caso si es spam o no, queda a criterio de los moderadores, por mi parte en este caso no lo fue y espero que aprendas que para conseguir esfuerzo en una respuesta, se debe emplear el mismo en la forma de hacer la pregunta.

Citar
Insisto, ya me he leido antes un poco de teoria, y el que me as pasado ahora, que mi ingles tampoco es para tirar cohetes, segun lo que e podido entender es cuando conviene usar los tipos de herencia, y esa no a sido mi pregunta :S.

Depende lo que quieras hacer, pero si derivas en protected, los miembros public y protected de la clase base, siguen siendo public y protected. son protected en la derivada.

Edit: Pequeña corrección.

Saludos



Título: Re: Dudas en c++
Publicado por: megalomania en 27 Junio 2010, 17:00 pm
Citar
Porque posiblemente dicho miembro necesita la posibilidad de ser consultado por varias instancias del objeto. Obviamente que si tenes una sola instancia no tiene sentido, pero cuando desarrollas una clase no lo haces solamente pensando en cuantas instancias del objeto van a existir. Por eso mismo te digo que depende de la estructura general del programa.
Ok, entendido, era solo eso, confirmar lo que yo habia entendido, gracias!

Citar
Lo que digas, a mi no me parece. Si planteas tu duda en forma de "Para que sirve tal x" sin elaborar mas, otra cosa no podes esperar. En todo caso si es spam o no, queda a criterio de los moderadores, por mi parte en este caso no lo fue y espero que aprendas que para conseguir esfuerzo en una respuesta, se debe emplear el mismo en la forma de hacer la pregunta.
Veo que ambos tenemos opiniones distintas, acerca de como responder, si bien es cierto cada uno es libre de escribir lo que desee, no deberíamos darle mas vueltas a esto, por mi parte doy el tema por zanjado.

Citar
Depende lo que quieras hacer, pero si derivas en protected, los miembros public y protected de la clase base, siguen siendo public y protected.
Saludos

Gracias!, como ya decia antes, la teoría ya la e leido y creo que la comprendo en su mayoria, pero aveces me kedan estas dudas existenciales, y como a mi me gusta saber lo que estoy haciendo y no escribir a lo tonto, por eso el de mi pregunta, ya que por una razon u otra hay cosas q parecen obvias pero le doy mas vueltas de las necesarios y me lio.

Una vez mas gracias ;)


Título: Re: Dudas en c++
Publicado por: Littlehorse en 27 Junio 2010, 17:11 pm
Citar
Veo que ambos tenemos opiniones distintas, acerca de como responder, si bien es cierto cada uno es libre de escribir lo que desee, no deberíamos darle mas vueltas a esto, por mi parte doy el tema por zanjado.

No creo que sean tan distintas, en mi caso me gusta explicar lo mejor posible siempre y cuando vea esfuerzo en la otra parte y se tengan los detalles suficientes sobre lo que hay que explicar. Probablemente si sean distintas las opiniones sobre como hacer una pregunta.
Por otro lado déjame decirte - como recomendación para futuros hilos- que si hubieses elaborado en tu post inicial de la misma forma que lo intentaste en los post siguientes, nadie te hubiese mandado a Google ya que la duda especifica se hubiese comprendido de entrada.

Citar
Gracias!

De nada :D, para eso estamos.

Saludos


Título: Re: [C++] Dudas
Publicado por: megalomania en 27 Junio 2010, 19:09 pm
Código
  1. class ClaseA
  2. {
  3.  public:
  4.  int a;
  5.  private:
  6.  int b;
  7.  protected:
  8.  int c;
  9. };
  10. class HPublica : public ClaseA
  11. {
  12.        int getNum(){ return a*c;};
  13. };
  14.  
  15. class HPrivada : private ClaseA
  16. {
  17.        int getNum(){ return a*c;};
  18. };
  19.  
  20. class HProtegida : protected ClaseA
  21. {
  22.        int getNum(){ return a*c;};
  23. };
  24. #pragma argsused
  25. int main(int argc, char* argv[])
  26. {
  27.        HPublica pub;
  28.        pub.a;
  29.  
  30.        HPrivada priv;
  31.        HProtegida proc;
  32.  
  33.        ClaseA claseA1 = pub;
  34.        ClaseA claseA2 = priv;//Error!!!
  35.        ClaseA claseA3 = proc;//Error!!!
  36.  
  37.        return 0;
  38. }

Creo que sigo sin entender los tipos de herencia :S
Quisiera saber xq me da error al compilar(cannot convert HPrivada to ClaseA y lo mismo con HProtegida) las 2 sentencias que pongo como error!!, es acaso porque al ser herencias del tipo privado o protegida sus instancias no conservan nada de la clase base?

salu2 y gracias