Class C++

#include 
using namespace std;
class base 
{
 public:
   virtual void vfunc(void)
    {
      cout << "This is base's vfunc()." << endl;
    }
};
class derived1 : public base 
{
 public:
   void vfunc(void)
    {
      cout << "This is derived1's vfunc()." << endl;
    }
};
class derived2 : public derived1 
{
 public:
   void vfunc(void)
   {
      cout << "This is derived2's vfunc()." << endl;
   }
};
int main(void)
{
   base *p, b;
   derived1 d1;
   derived2 d2;
   p = &b;        // Point to base class
   p->vfunc();
   p = &d1;       // Point to first derived class
   p->vfunc();
   p = &d2;       // Point to second derived class
   p->vfunc();
}