Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: Gerik en 28 Abril 2010, 06:28 AM

Título: Duda Acerca de Herencia
Publicado por: Gerik en 28 Abril 2010, 06:28 AM

digamos: xD

Class padre{public:
                  capturar();}
class hija:Public padre{capturar();}

main()
  {hija ob;
   ob.capturar();}

mi duda es como llamar la funcion capturar del padre desde el main con la clase hija

Agradezco su pronta Respuesta 
Título: Re: Duda Acerca de Herencia
Publicado por: Littlehorse en 28 Abril 2010, 09:28 AM
Si esta definida en la clase base, podrás acceder desde la derivada (al menos que el miembro sea privado), así que lo único que tienes que hacer es llamarla.

Por ejemplo:

Podes desambiguar directamente en la definición de la clase y hacer algo así:

Código (cpp) [Seleccionar]
class hija:public padre
{
public:
void capturar()
     {
      padre::capturar(); 
     }
};



O no hacer lo anterior y llamarla directamente desambiguando otra vez (con ::), con el objeto de la clase derivada.

Código (cpp) [Seleccionar]

hija obj;
obj.capturar();//Metodo publico, clase derivada
obj.padre::capturar();//Metodo publico, clase base     



De todas maneras hay que tener cuidado sobre este tipo de practicas ya que C++ permite herencia múltiple, por lo tanto las definiciones de los métodos pueden tornarse ambiguas.
En el caso que uses Visual Studio tal vez puedas usar el keyword __super (http://msdn.microsoft.com/en-us/library/94dw1w7x%28VS.80%29.aspx), pero por supuesto esto solo es Microsoft specific.

Te recomiendo leer sobre funciones virtuales para que tengas una idea de como podes aprovechar un poco mas este tipo de situaciones.


Saludos!