Cuando creo al Omnivoro, es normal de que cree 2 animales al mismo tiempo? cuando corro el programa me indica de que existen 5 animales 😕...

Alonso Cangalaya

Alonso Cangalaya

Pregunta
studenthace 4 años

Cuando creo al Omnivoro, es normal de que cree 2 animales al mismo tiempo? cuando corro el programa me indica de que existen 5 animales 😕

Animal *a = new Animal(); Hervivoro *e = new Hervivoro(); Carnivoro *c = new Carnivoro(); Omnivoro *o = new Omnivoro(); // genera 2 animales??
2 respuestas
para escribir tu comentario
    Alonso Cangalaya

    Alonso Cangalaya

    studenthace 4 años

    gracias!! como solución se me ocurrió restar -1 a num_animales en el contructor de la clase omnivoro

    class Omnivoro : public Hervivoro , public Carnivoro{ // heredamos carnivoro y hervivoro public: Omnivoro() : Hervivoro(), Carnivoro() { num_animales -=1;} // cuando se inicie el contructor, restamos -1 a num_animales para evitar ambiguedad void comer(void){ // método propio de la clase carnivoro cout << "Los omnivoros pueden comer lo que sea" << endl; } };

    resultado

    generando un nuevo animal generando un nuevo animal generando un nuevo animal generando un nuevo animal generando un nuevo animal numero de animales: 4
    Diana Martinez

    Diana Martinez

    studenthace 4 años

    Si, cómo menciono en la clase, al heredar de dos clases base, se comporta como una y cómo la otra a la vez, por lo tanto dentro de un omnivoro hay un carnívoro y un hervívoro.

    Hay formas de hacer que sea solo un nuevo animal, pero para el ejemplo de clase, lo que te sucede es un comportamiento esperado.

Curso de Programación Orientada a Objetos con C++

Curso de Programación Orientada a Objetos con C++

Comprende cómo gestionar memoria, punteros, y clases para aplicar la programación orientada a objetos con C++. Crea estructuras y hereda clases, utilizando polimorfismo y atributos estáticos, mientras profundizas en técnicas avanzadas.

Curso de Programación Orientada a Objetos con C++
Curso de Programación Orientada a Objetos con C++

Curso de Programación Orientada a Objetos con C++

Comprende cómo gestionar memoria, punteros, y clases para aplicar la programación orientada a objetos con C++. Crea estructuras y hereda clases, utilizando polimorfismo y atributos estáticos, mientras profundizas en técnicas avanzadas.