Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Métodos virtuales en POO

Estas en el tema de Métodos virtuales en POO en el foro de C/C++ en Foros del Web. Una duda: si yo quiero usar varias clases, con un método virtual puro, y esto seguro al 100% que solo voy a usar los métodos ...
  #1 (permalink)  
Antiguo 30/05/2010, 09:45
 
Fecha de Ingreso: mayo-2007
Mensajes: 200
Antigüedad: 17 años, 5 meses
Puntos: 1
Métodos virtuales en POO

Una duda: si yo quiero usar varias clases, con un método virtual puro, y esto seguro al 100% que solo voy a usar los métodos de las clases derivadas, ¿hace falta que implemente también el de la clase base?

Ejemplo:
Código C++:
Ver original
  1. class Animal{
  2.     public:
  3.         virtual int come(); { //Este nunca le voy a utilizar   return 1;}
  4. };
  5.  
  6. class Lobo : public Animal
  7. {
  8. public:
  9.     int come() { cout << "¡Yo como como un lobo!\n"; return 1; }
  10. };
  11.  
  12. class Pez : public Animal
  13. {
  14. public:
  15.     int come() { cout << "¡Yo como como un pez!\n"; return 1; }
  16. };
  17.  
  18. int main()
  19. {
  20.     Animal *unAnimal[2];
  21.     unAnimal[0] = new Lobo();
  22.     unAnimal[1] = new Pez();
  23.  
  24.     for(int i = 0; i < 2; i++) {
  25.         unAnimal[i]->come();
  26.     }

Estoy obligado a tener la clase base. ¿Qué hago con su implementación? ¿la dejo simplemente vacía?


PD: ejemplo sacado de la wikipedia
__________________
Blog: http://a-dream-of-dragon.blogspot.com
  #2 (permalink)  
Antiguo 02/06/2010, 14:00
 
Fecha de Ingreso: febrero-2003
Ubicación: D.F.
Mensajes: 163
Antigüedad: 21 años, 9 meses
Puntos: 22
Respuesta: Métodos virtuales en POO

El método como lo tienes declarado en la clase base no es puro, para eso tendrías que hacer:

virtual int come() = 0;

De esta manera no es necesario que tengas una definición en la clase base.

Etiquetas: poo, virtuales
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:30.