#include <iostream>
using namespace std;

class A {
public:
	void do_it() { cout << "I'm an A" << endl; }
};
class B : public A {
public:
	void do_it() { cout << "I'm an B" << endl; }
};

class C {
public:
	virtual void do_it() { cout << "I'm an C" << endl; }
};
class D : public C {
public:
	virtual void do_it() { cout << "I'm an D" << endl; }
};


int main(void) {
	A a;
	B b;
	A* obj;
	obj = &a;
	obj->do_it();
	obj = &b;
	obj->do_it();

	C c;
	D d;
	C* vobj;
	vobj = &c;
	vobj->do_it();
	vobj = &d;
	vobj->do_it();
	return 0;
} 
