Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/12/2009, 10:19
Tet0
 
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. }