#include <iostream>
using std::cout;
using std::endl;
class Base {
public:
virtual void vFunction()
{
cout << "class Base: virtual void vFunction()" << endl;
}
};
class Derived1 : public Base {
public:
void vFunction()
{
cout << "class Derived1: void vFunction()" << endl;
}
};
class Derived2 : public Derived1 {
public:
void vFunction()
{
cout << "class Derived2: void vFunction()" << endl;
}
};
int main()
{
Base *p;
Base o;
Derived1 d1;
Derived2 d2;
p = &o;
p->vFunction();
p = &d1;
p->vFunction();
p = &d2;
p->vFunction();
return 0;
}
/*
run:
class Base: virtual void vFunction()
class Derived1: void vFunction()
class Derived2: void vFunction()
*/