Pointers to derived class

Demonstrate pointer to derived class.
Demonstrate pointer to derived class.
  

#include <iostream>
using namespace std;

class BaseClass {
  int x;
public:
  void setx(int i) { 
     x = i; 
  }
  int getx() { 
     return x; 
  }
};

class DerivedClass : public BaseClass {
  int y;
public:
  void sety(int i) { 
     y = i; 
  }
  int gety() { 
     return y; 
  }
};

int main()
{
  BaseClass *p;                               // pointer to BaseClass type
  BaseClass baseObject;                       // object of BaseClass
  DerivedClass derivedObject;                 // object of DerivedClass


  p = &baseObject;                            // use p to access BaseClass object
  p->setx(10);                                // access BaseClass object
  cout << "Base object x: " << p->getx() << '\n';


  p = &derivedObject;                         // point to DerivedClass object 
  p->setx(99);                                // access DerivedClass object

  
  derivedObject.sety(88);                     // can't use p to set y, so do it directly
  cout << "Derived object x: " << p->getx() << '\n';
  cout << "Derived object y: " << derivedObject.gety() << '\n';

  return 0;
}