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

Ayuda polimorfismo

Estas en el tema de Ayuda polimorfismo en el foro de C/C++ en Foros del Web. Buenas.. Estoy empezando a ver estos de las funciones virtuales y las diferentes formas que puede tener un tipo de dato.. tengo este ejemplo @import ...
  #1 (permalink)  
Antiguo 20/12/2009, 10:19
 
Fecha de Ingreso: octubre-2008
Mensajes: 50
Antigüedad: 16 años, 2 meses
Puntos: 2
Ayuda polimorfismo

Buenas.. Estoy empezando a ver estos de las funciones virtuales y las diferentes formas que puede tener un tipo de dato.. tengo este ejemplo

Código C++:
Ver original
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. class check{
  7. public:
  8.     virtual void print(){ cout << "si" << endl;};
  9. };
  10.  
  11. class check1 : public check{};
  12.  
  13. class check2 : public check{
  14.  
  15. public:
  16.     void print() {cout << "no" << endl;};
  17. };
  18.  
  19. int main(void){
  20.  
  21.     vector<check> v;
  22.  
  23.     check1 _check1;
  24.     check2 _check2;
  25.  
  26.     v.push_back(_check1);
  27.     v.push_back(_check2);
  28.  
  29.     v[1].print();
  30.  
  31. }

seguna la teoria de poliformosmo el deberia imprimirme "no" pero me sigue imprimiendo si..

cosa que cambia cuando hago esto

Código C++:
Ver original
  1. int main(void){
  2.  
  3.     vector<check*> v;
  4.  
  5.     v.push_back(new check1);
  6.     v.push_back(new check2);
  7.  
  8.     v[1]->print();
  9.  
  10. }
  #2 (permalink)  
Antiguo 22/12/2009, 07:48
 
Fecha de Ingreso: octubre-2009
Ubicación: www.comoquedara.es
Mensajes: 3
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Ayuda polimorfismo

Hola!!

Tu mismo te habrás dado cuenta de que el problema no tiene que ver con la jerarquía de herencia que has construido, ya que si haces:

Código C++:
Ver original
  1. int main(void){
  2.  
  3.     check2 _check2;
  4.     _check2.print();
  5.  
  6. }

Sale "no" (lo que tiene que salir). Osea que será por otro motivo :)
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 01:23.