class myOldClass
  {
     variables + functions
     ...
  }
  class myNewClass public : public myOldClass    
  {
     more variables + more functions
     ...
  }
 
 |  
    
 class myOldClass
 {
 public:
    int i1;
    void func1(int i)   
    {
       i1 = i1 + i;
    }
 };
 
 |  
   
    
 class myNewClass : public myOldClass   
 {
 public:
    int i2;
    void func2(int i)
    {
       i2 = i2 - i;
    }
 };
 
 |  
It is as though we have defined myNewClass as follows:
    
 class myNewClass
 {
 public:
    int i1;
    int i2;
    void func1(int i)
    {
       i1 = i1 + i;
    }
    void func2(int i)   
    {
       i2 = i2 - i;
    }
 };
 
 |  
 
The way to do that should be obvious; and I will not spend much time dwelling on examples.
Before we can understand how such program can be written, I need to discuss function polymorphism first.