elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C++] Dudas en general
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: [C++] Dudas en general  (Leído 6,589 veces)
megalomania

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Dudas en c++
« Respuesta #10 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!!


En línea

Horricreu
Wiki

Desconectado Desconectado

Mensajes: 290

¡La verdad os hará libres!


Ver Perfil WWW
Re: Dudas en c++
« Respuesta #11 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


« Última modificación: 26 Agosto 2010, 01:05 am por Horricreu » En línea

megalomania

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Dudas en c++
« Respuesta #12 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  :-[ :-[ :-[ :-[ :-[ :-[
En línea

Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Dudas en c++
« Respuesta #13 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

« Última modificación: 27 Junio 2010, 18:15 pm por Littlehorse » En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
megalomania

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Dudas en c++
« Respuesta #14 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 ;)
En línea

Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Dudas en c++
« Respuesta #15 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
En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
megalomania

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: [C++] Dudas
« Respuesta #16 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
« Última modificación: 27 Junio 2010, 20:07 pm por megalomania » En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Error general en ping
Redes
tremolero 2 12,804 Último mensaje 12 Junio 2012, 11:30 am
por tremolero
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines