Ir al contenido

Discusión:Herencia virtual

Contenido de la página no disponible en otros idiomas.
De Wikipedia, la enciclopedia libre

Otra solución al problema de las vtables, en mi opinión, es diseñar las clases de forma que los componentes carezcan de miembros comunes, de forma que Come, Vuela, Camina, etc, sean clases básicas con las que definir caracteristicas, clases más pequeñas en principio y más especializadas.

Un poco de código:

   class Animal
   {
   public:
       void Nace();
       void Come();
       void Reproduce();
       void Muere();
   };
   class Volador
   {
   public:
       void SetAlas(long nAlas);
       long GetAlas();
   };
   class Mamifero
   {
   public:
       void SetMamas(long nMamas);
       long GetMamas();
   };
   class Murcielago: public Animal,
                     public Volador,
                     public Mamifero
   {
   public:
       Murcielago()
       {
           Nace();
           SetAlas(2);
           SetMamas(4);
       }
   };

--Pharago (discusión) 14:16 17 oct 2008 (UTC)[responder]