#include <iostream>

using namespace std;


class myBase
{
public:
  myBase() {basevalue=2;} // default constructor for base class
  myBase(int x) {basevalue=x;} // constructor for base class
  void show() {cout << "Base waarde: " << basevalue << endl;}
private:
  long basevalue;
};


class myDerived : public myBase
{
public:
  myDerived() {derivedvalue=3;} // default constructor for derived class
  myDerived(int x,int y) : myBase(x)
    { derivedvalue=y; } // constructor for derived class
  void laatzien() { cout << "Laatzien: " << derivedvalue << endl; }
  void show()
  {
    cout << "Afgeleide waarde: " << derivedvalue << endl; 
    myBase::show();
  }
private:
  long derivedvalue;
};


int main()
{
myBase mb(5);
myDerived md(6,7); // constructor uit derived EN base worden aangeroepen

  mb.show(); // roep public functie van base-class object aan
 
  cout << "Call public show() from base class of derived-object part\n";
  md.show(); // roep public functie uit base-deel aan

  cout << "---\nCall public laatzien() from derived class part\n";
  md.laatzien(); // roep public functie uit derived-deel aan

  mb.show();
  md.show();

} // main()

