Ver Mensaje Individual
  #4 (permalink)  
Antiguo 02/12/2015, 07:46
Avatar de xKuZz
xKuZz
 
Fecha de Ingreso: febrero-2015
Ubicación: nullptr
Mensajes: 183
Antigüedad: 9 años, 10 meses
Puntos: 27
Respuesta: ¿Por qué se hacen llamadas a los métodos de las clases bases?

Cuando tu haces herencia public los métodos y datos public y protected se "copian" en la clase derivada, pero la clase derivada también tiene acceso a la clase base.

Cuando tu redefines el método redefines dicha "copia" por lo que la copia es cambiada pero el método base sigue siendo igual. Te dejo aquí un ejemplo para que lo comprendas:

Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class Base {
  5.    public:
  6.     virtual void f() {
  7.         cout << "soy la base";
  8.     }
  9.     virtual void g(){
  10.         cout << "Blablablabla no me vas a usar";
  11.     }
  12.  
  13.     virtual void h() {
  14.         cout << "Accedo al h de la base.\n";
  15.     }
  16. };
  17.  
  18. class Derivada: public Base{
  19. public:
  20.  
  21.     void f(){
  22.         cout << "Yo no ";
  23.         Base::f();
  24.         cout << ", pero puedo llamar a métodos de la clase de la que heredo" << endl;
  25.     }
  26.     void g(){
  27.         cout << "Pero tambien puedo redefinir metodos que no necesitan de la base"<< endl;
  28.     }
  29.     void h(){
  30.         cout << "Accedo al h de la derivada." << endl;
  31.     }
  32. };
  33.  
  34.  
  35. int main(){
  36.     Derivada A;
  37.     A.f();
  38.     A.g();
  39.     A.h();
  40.     A.Base::h();
  41. }