#include
using namespace std;
class BaseClass {
public:
virtual void myFunction()
{
cout << "Using BaseClass version of myFunction()\n";
}
};
class DerivedClass1 : public BaseClass {
public:
void myFunction()
{
cout << "Using DerivedClass1's version of myFunction()\n";
}
};
class DerivedClass2 : public DerivedClass1 {
public:
void myFunction()
{
cout << "Using DerivedClass2's version of myFunction()\n";
}
};
int main()
{
BaseClass *p;
BaseClass ob;
DerivedClass1 derivedObject1;
DerivedClass2 derivedObject2;
p = &ob;
p->myFunction(); // use BaseClass's myFunction()
p = &derivedObject1;
p->myFunction(); // use DerivedClass1's myFunction()
p = &derivedObject2;
p->myFunction(); // use DerivedClass2's myFunction()
return 0;
}