// C++ does polymorphism
class A // base class declaration
{
public:
A() { index = 0; } // constructor
virtual void // virtual allows overloading
doIncrement() { index++; } // manipulator definition
protected:
int index; // hidden member variable
};
class B : public A // subclass declaration
{
public:
virtual void
doIncrement() { index += 3; } // overloaded manipulator
};
class C : public A // another subclass declaration
{
public:
virtual void
doIncrement() { index += 7; } // overloaded manipulator
};
main()
{
A a;
a.doIncrement();
B b;
b.doIncrement();
C c;
c.doIncrement();
}