#include <iostream>
using namespace std;

class Base{
public:
   Base(){};
   virtual ~Base() {};
   virtual void foomethod()=0; //Marked as pure virtual
};

class A : public Base{
public:	
   A(){};  //Ctor
   virtual ~A(){}; //Dtor
   void foomethod(){ cout << "Hello from A"; }
};
class B : public Base{
public:
   B(){};  //Ctor
   virtual ~B(){}; //Dtor
   void foomethod(){ /* DO SOMETHING */ }
};

int main() {
	
	// Base obj; // Can't do that
	Base *obj = new A();
	obj->foomethod(); // A's one
	delete obj;
	
    return 0;
}