Use Virtual Functions to change the method behaviour : virtual function « Class « C++ Tutorial






#include <iostream>  
using namespace std;
class Base {  
public:  
  virtual void who(void) {
    cout << "Base\n";  
  }  
};  
     
class first_d : public Base {  
public:  
  void who(void) { // define who() relative to first_d  
    cout << "First derivation\n";  
  }  
};  
     
class second_d : public Base {  
public:  
  void who(void) { // define who() relative to second_d  
    cout << "Second derivation\n";  
  }  
};  
     
int main(void)  
{  
  Base base_obj;  
  Base *p;  
  first_d first_obj;  
  second_d second_obj;  
     
  p = &base_obj;  
  p->who();  // access Base's who  
     
  p = &first_obj;  
  p->who(); // access first_d's who  
     
  p = &second_obj;  
  p->who();  // access second_d's who  
     
  return 0;  
}








9.28.virtual function
9.28.1.A virtual function
9.28.2.Access base class's virtual if derived class does not redefine it
9.28.3.Use virtual functions and polymorphism
9.28.4.A pure virtual function
9.28.5.Multiple virtual member functions called in turn
9.28.6.Class with only virtual methods
9.28.7.Use virtual function to calculate area for different shapes
9.28.8.Use Virtual Functions to change the method behaviour
9.28.9.Why Virtual Functions: one interface, multiple methods
9.28.10.Implementing pure virtual functions